Jon*_*ing 10 c# asp.net-mvc file-upload asp.net-mvc-4
我正在尝试在一个表单上上传多个图像
@using (Html.BeginForm("Create", "AdminRestaurants", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="form-group">
<label for="logoFile" class="col-sm-2 control-label">Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="logoFile" id="logoFile" />
</div>
</div>
<div class="form-group">
<label for="fohFile" class="col-sm-2 control-label">FOH Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="fohFile" id="fohFile" />
</div>
</div>
<div class="form-group">
<label for="bohFile" class="col-sm-2 control-label">BOH Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="bohFile" id="bohFile" />
</div>
</div>
<div class="form-group">
<label for="mgmFile" class="col-sm-2 control-label">MGM Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="mgmFile" id="mgmFile" />
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我正试图用这个处理控制器上的表单
public ActionResult Create(IEnumerable<HttpPostedFileBase> files, RestaurantModel collection)
{
if (ViewData.ModelState.IsValid)
{
}
}
Run Code Online (Sandbox Code Playgroud)
目前files控制器上的签名中没有任何内容.仅使用一个文件时,这似乎很有效
public ActionResult Create(HttpPostedFileBase file, EventsModel collection)
Run Code Online (Sandbox Code Playgroud)
有人能指出我允许用一个提交表单上传多个文件的方向吗?
Mor*_*lus 18
您的问题是表单创建了一个post请求,其中包含模型绑定器可以绑定的信息,因为命名约定不正确.
你看,你有4个文件字段,每个字段都有不同的名称,模型绑定器正确绑定它们你的控制器动作签名应如下所示:
public ActionResult Create(HttpPostedFileBase mgmFile,
HttpPostedFileBase logoFile,
HttpPostedFileBase fohFile ,
HttpPostedFileBase bohFile)
Run Code Online (Sandbox Code Playgroud)
遵循MCV设计模式最好的选择是使用一个包含a的ViewModel,IEnumerable<HttpPostedFileBase>
你可以创建一个自定义编辑器模板IEnumerable<HttpPostedFileBase>
所以你可以这样使用它:
Html.EditorFor(m=>Model.filesUploaded)
Run Code Online (Sandbox Code Playgroud)
你的控制器动作看起来像这样:
public ActionResult Create(MyViewModel i_InputModel)
{
i_InputModel.filesUploade; //Use the files here to upload them.
}
Run Code Online (Sandbox Code Playgroud)
其他选项包括: 在文件输入字段上使用HTML5 multiple属性,如下所示:
<label for="mgmFile" class="col-sm-2 control-label">Files:</label>
<div class="col-sm-6">
<input type="file" multiple="multiple" name="files" id="files" />
</div>
Run Code Online (Sandbox Code Playgroud)
和这样的控制器动作:
public ActionResult Create(HttpPostedFileBase files)
Run Code Online (Sandbox Code Playgroud)
或使用多个文件字段,但在其名称中对其进行索引:
<input type="file" multiple="multiple" name="files[0]" id="files_1" />
<input type="file" multiple="multiple" name="files[1]" id="files_2" />
<input type="file" multiple="multiple" name="files[2]" id="files_3" />
<input type="file" multiple="multiple" name="files[3]" id="files_4" />
Run Code Online (Sandbox Code Playgroud)
然后你可以使用像这样的控制器动作:
public ActionResult Create(IEnumerable<HttpPostedFileBase> files)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26315 次 |
| 最近记录: |