【发布时间】:2013-05-06 05:58:40
【问题描述】:
我正在使用 ASP.NET MVC 4。
我认为我的 ModelState 没有正确传递,
控制器动作:Home/EnrolResult如下:
[HttpPost]
public ActionResult EnrolResult(UploadModel model)
{
if (ModelState.IsValid)
{
// my codes in here
return View();
}
return View("~/Views/Home/Index", model);
}
视图:首页/索引,如下:
@using (Html.BeginForm("EnrolResult", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary()
@Html.LabelFor(m => m.Firstname)
@Html.TextBoxFor(m => m.Firstname)
@Html.LabelFor(m => m.Surname)
@Html.TextBoxFor(m => m.Surname)
<li data-role="fieldcontain">
<input type="submit" value="Enrol" />
</li>
}
当我正确输入详细信息时,它会正常运行并显示 enrolresult 视图。
当我输入错误的详细信息时,它会返回主页/索引,但不会显示未输入哪个表单的验证错误。
模型设置正确,因为我已经对其进行了测试,其中我将 EnrolResult 操作更改为索引操作并且正确显示了验证错误,我使用了 view(model),这意味着不必像我一样传递 ModelState我正在尝试在这种情况下做。
我的做法正确吗?我见过有人使用 TempData,但我认为这种方法是可行的?
【问题讨论】:
-
为什么不直接将模型返回到视图中?您是否也必须返回 URL? IE。你试过返回吗(查看模型);它不起作用?
-
输入表单信息的视图是home/index,但是控制器动作和结果视图是EnrolResult。简单地放 return View(model) 将显示 EnrolResult 而不是将它们指向他们应该正确输入信息到表单的视图。
-
您的视图页面中是否包含验证 javascript?
-
发帖到
EnrolResult的观点是您在问题中向我们展示的观点?我希望不是因为它清楚地表明您正在发布到home.Index。这就是您没有收到验证消息的原因,因为 home.index 视图与您用于发布的视图不同。 -
如果设置为true,可以试试Html.ValidationSummary(false)。