如何将文件列表添加到ViewModel

时间:2015-09-26 18:32:56

标签: c# html asp.net-mvc

我有一个接受文件的视图。这样做的原因是用户可以上传图像。通常在执行此操作时,我会输入一个文件,然后将文件发送回我的控制器,我可以将其转换并使用它。

但是,在此特定视图中,有多个文件和要上载的文件数量未知。因此,我不能简单地将文件发回给我的控制器。我的想法是我会创建一个ViewModel,在ViewModel中会有一个存储添加文件的文件列表。然后我会回发ViewModel并收集文件列表。

我的问题是我不知道在用户上传文件后如何将文件添加到我的ViewModel。通常对于文本我会使用类似编辑器的东西,但我不确定是否存在fileuploadfor这样的东西。

我假设我可以修改当前输入文件的方法,然后将其分配给我的ViewModel,但我不知道如何。

我目前获取文件的方法:

<input type="file" name="file" />

我想将该文件添加到Model.InputFiles列表中。 Model.InputFiles是HttpPostedFile类型的列表

1 个答案:

答案 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()