【发布时间】:2014-09-18 15:48:55
【问题描述】:
在 ASP.NET MVC 5 应用程序中,如果 ModelState 验证失败,以下代码应将用户返回原始视图。
将向用户显示与验证失败的输入相关的错误消息。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(DemoViewModel model)
{
if (!ModelState.IsValid) return View(model);
...
return RedirectToAction("Details");
}
但是,目前,当我的 ModelState 无效时,我会收到 400 Bad Request Error 页面:
IE
Chrome
最初,我认为这是自定义错误页面的错误配置。 为了排除这种情况,我创建了一个具有相同错误页面配置的新项目,但我无法重新创建问题。
仅供参考,这里是错误配置:
Web.config 自定义错误
<customErrors mode="On" defaultRedirect="~/500.aspx" redirectMode="ResponseRewrite">
<error statusCode="401" redirect="~/401.aspx" />
<error statusCode="403" redirect="~/401.aspx" />
<error statusCode="404" redirect="~/404.aspx" />
</customErrors>
Web.config httpErrors
<httpErrors errorMode="Custom" >
<remove statusCode="401" />
<error statusCode="401" path="401.html" responseMode="File" />
<remove statusCode="403" />
<error statusCode="403" path="401.html" responseMode="File" />
<remove statusCode="404" />
<error statusCode="404" path="404.html" responseMode="File"/>
<remove statusCode="500" />
<error statusCode="500" path="500.html" responseMode="File" />
</httpErrors>
有什么会破坏ModelState 的处理方式?
【问题讨论】:
-
在 IF 条件下设置断点并查看代码块是否已调试。可能是您的代码无法访问
-
是否有任何名为“编辑”的视图..????
-
@Kartikeya 是的,视图是可用的。
-
@sangramparmar
if语句上的断点被命中并且代码可以访问。
标签: c# asp.net asp.net-mvc asp.net-mvc-5