我有一个表单,我正在上传多个文件,并且有几个文本框和一些复选框与每个正在上传的文件相关联。我已经看到了上传多个文件的示例,其中 actionresult 签名是这样的:
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> fileUpload)
但是,我找不到任何可以上传多个文件的示例,其中我的 actionresult 签名是这样的:
[HttpPost]
public ActionResult Upload(MyViewModel vm)
我希望发布此视图模型的原因是因为我认为它比使用 FormCollection 变量更干净,并且因为我希望上传的每个文件以及添加的数据及其关联的文本框List<FileUploadPacket>
通过视图模型
更新
我的视图模型如下:
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 )%>
如您所见,我将特定于这个文件的所有其他属性都保存在它自己的类中。因此,在我的表格中,员工可以输入他的姓名并上传他的文件,并为每个文件提供一些描述和其他详细信息。如果我将公共HttpPostedFileBase UpFile { get; set; }
属性移动到EmployeeVM
类,那么我将不得不将所有文件分别收集到一个数组中,并手动将文件映射到它的描述。有没有办法将UpFile
属性保留在FileUploadPacket
类本身中?
我正在使用 aspx 视图引擎。
请帮忙。谢谢你的时间...