AddModelError消息未显示

时间:2012-09-07 20:39:21

标签: asp.net-mvc exception-handling

我有一个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

3 个答案:

答案 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块中做回滚。谢谢大家的帮助。