【发布时间】:2014-03-04 17:40:39
【问题描述】:
这是我的包含上传文件控件的视图。所以它需要“multipart/form-data”内容类型。
@using (Html.BeginForm("Create", "RoutinTest", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div>
@Html.LabelFor(model => model.ScannedFile)
<div>
<input type="file" name="ScannedFile" multiple="multiple" />
@Html.ValidationMessageFor(model => model.ScannedFile)
</div>
</div>
<div>
<div>
<input type="submit" value="Save" />
</div>
</div>
这是我的控制器,它是创建操作方法:
[HttpGet]
public ActionResult Create(string patientId, string fullName)
{
ViewBag.PatientId = patientId;
ViewBag.FullName = fullName;
return View();
}
[HttpPost]
public ActionResult Create() RoutinTest routintest, string patientId, string fullName)
{
}
问题是在第二个 Create 操作方法(post 方法)上,patentId 和 fullName 都丢失了。 (patientId = 0 and fullName = null) 但我将它们都设置为 Get 方法。
令人惊讶的是,当我将表单内容类型更改为默认值(通过删除 multipart/form-data)时,我能够拥有这两个参数值。我知道我可以通过将这两个 ViewBags 值设置为隐藏字段来解决问题而无需更改表单内容类型,但我只想知道为什么会发生这种情况? “multiPart/form-data”表单内容类型对这些 ViewBags 值有何影响?
谢谢
【问题讨论】:
标签: asp.net-mvc forms model-view-controller multipartform-data