複数のファイルをアップロードするフォームがあり、アップロードされる各ファイルに関連付けられたいくつかのテキストボックスといくつかのチェックボックスがあります。actionresult 署名が次のような複数のファイルをアップロードする例を見てきました。
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> fileUpload)
ただし、アクション結果の署名が次のような複数のファイルをアップロードできる例は見つかりません。
[HttpPost]
public ActionResult Upload(MyViewModel vm)
このビューモデルを投稿したい理由は、 FormCollection 変数を使用するよりもきれいだと思うからです。また、アップロードされる各ファイルと、関連するテキストボックスとともに追加されたデータList<FileUploadPacket>
を、ビューモデル
アップデート
以下の私のViewモデル:
public class EmployeeVM
{
public int EmployeeID {get ;set;}
public string EmpName {get ;set;}
//Other properties
public List<FileUploadPacket> FileUploadPackets { get; set; }
}
タイプ HttpPostedFileBase のプロパティを持つ FileUploadPacket クラス
public class FileUploadPacket
{
public int FileID {get ;set;}
public string UserEnteredDesc {get ;set;}
//some more other properties
public HttpPostedFileBase UpFile { get; set; }
}
以下のように私のview.aspxのコードスニペット
<%: Html.TextBoxFor(model => model.EmpName, new { maxLength = 50 })%>
Upload your files here:
<input type="file" id="UpFile" name="UpFile" value="ActionHandlerForForm" />
<%: Html.TextBoxFor(model => model.FileUploadPackets[0].UserEnteredDesc )%>
<input type="file" id="UpFile" name="UpFile" value="ActionHandlerForForm" />
<%: Html.TextBoxFor(model => model.FileUploadPackets[1].UserEnteredDesc )%>
ご覧のとおり、アップロードされるこの 1 つのファイルに固有の他のすべてのプロパティは、独自のクラスに保持されています。私のフォームでは、従業員が自分の名前を入力してファイルをアップロードし、各ファイルの説明とその他の詳細を提供できます。パブリックHttpPostedFileBase UpFile { get; set; }
プロパティをEmployeeVM
クラスに移動すると、すべてのファイルを配列に個別に収集し、ファイルをその説明に手動でマップする必要があります。UpFile
プロパティをFileUploadPacket
クラス自体に保持する方法はありませんか?
aspx ビュー エンジンを使用しています。
助けてください。御時間ありがとうございます...