2017-10-07 9 views
0

私は、ユーザーがファイルをアップロードできるように単純なビューを持つAspNet Core Webアプリケーションを持っています。 ビューモデルのfileプロパティには[必須]属性があります。ただし、送信ボタンをクリックすると、ファイルが選択されていなくても投稿が実行されます。AspNet Core - ファイル入力時に[必須]属性が機能しない

ビューモデル:

public class DocumentUploadViewModel 
{ 
    [HiddenInput] 
    public string Id { get; set; } 

    [Required] 
    [FileExtensions(Extensions = "pdf")] 
    public IFormFile Document { get; set; } 
} 

ビュー:

@using App.Models.DocumentViewModels 
@model DocumentUploadViewModel 

@{ 
    ViewData["Title"] = "Upload Document"; 
} 

<h2>Upload Document</h2> 

<form method="post" enctype="multipart/form-data" asp-controller="Document" asp-action="Upload" > 
    <div class="form-horizontal"> 
     <div class="form-group"> 
      <input asp-for="Id" /> 

      <label class="col-md-2 control-label">Document</label> 
      <div class="col-md-10"> 
       <input class="form-control" type="file" asp-for="Document" /> 
       <span asp-validation-for="Document" class="text-danger"></span> 
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input id="save" name="save" type="submit" value="Upload" class="btn btn-default pull-right" /> 
      </div> 
     </div> 
    </div> 
</form> 

答えて

2

Client side validationセクションによると:

あなたは、クライアント側のための場所で適切なJavaScriptのスクリプト参照を持つビューを持っている必要がありますあなたがここに示すように動作するように検証してください:

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.0.min.js"></script> 

<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script> 
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script> 
+0

Arg!私はそれを逃したとは信じられない!あなたはRTFMではなく、あまりにも古い/経験豊富な/等ではありません。 :) – Steve

関連する問題