1

我有一个编辑页面,当用户通过输入相同的名称提交页面时,会引发异常并被捕获。但它没有重定向到编辑页面以显示模型错误,而是显示带有异常详细信息的 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
4

3 回答 3

1

如果您在 AddModelError 中将“String.Empty”作为键传递..那么在您看来,您应该有..

错误消息出现在

<%: Html.ValidationSummary() %>

或者如果您想将“名称”指定为键,则

ModelState.AddModelError(Name, "Customer with same name already exists.");  

<%=Html.TextBox("Name") %> <br /> 
<%=Html.ValidationMessage("Name") %>
于 2012-09-07T21:11:46.433 回答
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);
}
于 2012-09-07T20:51:27.217 回答
0

雅虎!!我弄清楚了问题所在。实际上我正在执行 trans.commit ,当它失败时,我没有在 catch 块中进行回滚。感谢你的帮助。

于 2012-09-07T22:29:10.523 回答