【发布时间】:2015-05-06 03:28:42
【问题描述】:
一直在尝试实现包含多个文件的文件上传器,但我不断收到无效的ModelState。这是我的代码(只是必需品)
视图模型:
public IEnumerable<HttpPostedFileBase> files { get; set; }
view.cshtml:
@model ITManagement.ViewModels.AssetViewModel
@using (Html.BeginForm(new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Asset</h4>
<hr />
.
. The rest of the form is located here
.
.
<div class="form-group">
@Html.LabelFor(viewModel => viewModel.objectModel.documentInfo.documents.fileContent, htmlAttributes: new {@class = "control-label col-md-2" } )
<div class="col-md-2">
<input class="single-line" id=@Html.IdFor(viewModel => viewModel.files)
name=@Html.NameFor(viewModel => viewModel.files)
type="file" multiple="multiple" />
</div>
</div>
控制器:
[Route("create", Name = AssetsControllerRoute.Create)]
public ActionResult create()
{
AssetViewModel evm = new AssetViewModel();
return View(evm);
}
// POST: Assets/Create
[HttpPost]
[ValidateAntiForgeryToken]
[Route("create")]
public ActionResult create(AssetViewModel asset)
{
if (ModelState.IsValid)
{
erepo.add(asset.objectModel);
return RedirectToAction("Index");
}
return View(asset);
}
我已经遇到过this question,然后是this error and answer,但我仍然缺少一些东西。当我上传文件并提交表单时,files 变量为空。我确实在搜索中看到使用 Request.Files,但是尝试绑定到 IEnumerable<HttpPostedFileBase> 和使用 Request.Files 有什么区别?
这是无效模型状态的原因:
“从类型'System.String'到类型'System.Web.HttpPostedFileBase'的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。”
【问题讨论】:
标签: c# asp.net-mvc