我有一个接受文件的视图。这样做的原因是用户可以上传图像。通常在执行此操作时,我会输入一个文件,然后将文件发送回我的控制器,我可以将其转换并使用它。
但是,在此特定视图中,有多个文件和要上载的文件数量未知。因此,我不能简单地将文件发回给我的控制器。我的想法是我会创建一个ViewModel,在ViewModel中会有一个存储添加文件的文件列表。然后我会回发ViewModel并收集文件列表。
我的问题是我不知道在用户上传文件后如何将文件添加到我的ViewModel。通常对于文本我会使用类似编辑器的东西,但我不确定是否存在fileuploadfor这样的东西。
我假设我可以修改当前输入文件的方法,然后将其分配给我的ViewModel,但我不知道如何。
我目前获取文件的方法:
<input type="file" name="file" />
我想将该文件添加到Model.InputFiles列表中。 Model.InputFiles是HttpPostedFile类型的列表
答案 0 :(得分:1)
您只需为public Range newRange(int from,int to){
RangeImplem impIns = new RangeImplem();
impIns.from = from;
impIns.to = to;
return impIns;
}
制作一个编辑器模板,然后在您的视图中使用它。首先在HttpPostedFileBase
文件夹中创建一个名称为Views\Shared\EditorTemplates
的文件,其中包含以下内容:
HttpPostedFileBase.cshtml
现在考虑一下这样的视图模型:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue.ToString(),new{type="file"})
你的行动方法可能是这样的:
public class MyViewModel
{
public HttpPostedFileBase[] InputFiles { get; set; }
// other properties
}
最后,您可以轻松使用public ActionResult MyAction()
{
// a simple example
return View(new MyViewModel{ InputFiles = new InputFiles[10] });
}
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
var myFile=model.InputFiles[0];
}
方法:
EditorFor()