我有一个EDIT页面,当用户通过输入相同的名称提交页面时,会引发异常并被捕获。但它没有重定向到编辑页面来显示模型错误,而是显示带有异常详细信息的asp.net黄色错误页面。我仍然没有控制器的OnException中的任何代码,我在我的开发机器上看到了这一点。
try
{
//code
}
catch (Exception ex)
{
ModelState.AddModelError(string.Empty, "Customer with same name already exists.");
}
return RedirectToAction("Edit", new {id=model.id}); <--not executing
答案 0 :(得分:0)
如果要显示要在视图中的操作方法中添加的“验证错误”消息,则需要返回要查看的模型。保存成功完成后,您将执行重定向到GET操作。
[HttpPost]
public ActionResult CreateUser(UserViewModel model)
{
try
{
//Save and Redirect to GET action (PRG pattern)
//Assuming model.ID will have the Id of record.
return RedirectToAction("View",new {id=model.ID });
}
catch(Exception ex)
{
//Log error
ModelState.AddModelError("","Some error message");
}
return View(model);
}
答案 1 :(得分:0)
如果你在AddModelError中传递'String.Empty'作为Key ..然后在你的视图中你应该有..
中出现的错误消息
<%: Html.ValidationSummary() %>
或 如果要将“名称”指定为键,则
ModelState.AddModelError(Name, "Customer with same name already exists.");
<%=Html.TextBox("Name") %> <br />
<%=Html.ValidationMessage("Name") %>
答案 2 :(得分:0)
Yahooo !!我弄清楚问题是什么。实际上我正在做trans.commit,当它失败时,我没有在catch块中做回滚。谢谢大家的帮助。