すべてのファイル入力に対して MVC4 用の EditorTemplate を作成しようとしています。blueimp jquery-file-upload プラグインを使用していますが、うまく機能していますが、エディター テンプレートには疑問があります。
次のようなエディター テンプレートにバインドするクラスがあります。
public class FileUpload
{
public int Id { get; set; }
public string FileName { get; set; }
public string TempFileName { get; set; }
public bool Deleted { get; set; }
public bool Modified { get; set; }
...
public class MultiFileUpload : List<FileUpload>
{
}
そして、ファイルをアップロードしたいViewModelには、これがあります:
public class TestModel
{
[Required]
[MaxLength(3)]
public MultiFileUpload File { get; set; }
}
これは私の EditorTemplate (/Views/Shared/EditorTemplates/MultiFileUpload.cshtml) です。
@model MultiFileUpload
<div class="file-upload">
<ul class="list-group files-list">
@for (var i = 0; i < Model.Count; i++)
{
<li class='list-group-item'>
@Html.HiddenFor(m => m[i].Id)
@Html.HiddenFor(m => m[i].Deleted)
@Html.HiddenFor(m => m[i].TempFileName)
@Html.HiddenFor(m => m[i].FileName)
@Model[i].FileName
<a href="#" class="delete pull-right" style="margin-right:-15px; text-decoration:none;"><i class="icon-remove"></i></a>
</li>
}
</ul>
<span class="btn btn-default fileinput-button">
<i class="icon-plus"></i>
<span>Add File</span>
<input type="file" name="" data-url="api/fileupload" data-single="false" />
</span>
</div>
TestModel で自分の File プロパティをクライアントで検証したいのですが (MaxLength はユーザーがアップロードできるファイルの数になります)、どうすればそれを行うことができますか?
または、このファイルのアップロードを mvc4 でモジュラー形式で行う他の推奨される方法はありますか?