私は複数のファイルをアップロードしているフォームを持っており、アップロードされる各ファイルに関連したテキストボックスといくつかのチェックボックスがあります。 私はのActionResultの署名は、このようなもので、複数のファイルのアップロードのための例を見てきました。しかし、私は私のActionResultの署名は、このようなものであるところ、アップロード、複数のファイルを持つことができます任意の例を見つけるカントViewmodelにバインドされたファイルアップロード
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> fileUpload)
を:
[HttpPost]
public ActionResult Upload(MyViewModel vm)
FormCollection変数を使用するよりもはるかにクリーンだと思っています。アップロードされる各ファイルと関連するテキストボックスと共に追加されたデータが、 List<FileUploadPacket>
これはp
public class EmployeeVM
{
public int EmployeeID {get ;set;}
public string EmpName {get ;set;}
//Other properties
public List<FileUploadPacket> FileUploadPackets { get; set; }
}
型のプロパティを持つFileUploadPacketクラスHttpPostedFileBase
public class FileUploadPacket
{
public int FileID {get ;set;}
public string UserEnteredDesc {get ;set;}
//some more other properties
public HttpPostedFileBase UpFile { get; set; }
}
私の見解のコードスニペット:ViewModelに
UPDATE
下のマイビューモデルの芸術。以下の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
クラスに移動すると、配列内のすべてのファイルを個別に収集し、ファイルをその説明に手動でマップする必要があります。 FileUploadPacket
クラス自体のUpFile
プロパティを保持する方法はありませんか?
私はaspxビューエンジンを使用しています。
助けてください。あなたのお時間をいただきありがとうございます...
'enctype =" multipart/form-data "の部分が私のためにそれを解決しました。 –