我有一个编辑页面,当用户通过输入相同的名称提交页面时,异常被引发并被捕获。但它不是重定向到编辑页面来显示模型错误,而是显示带有异常详细信息的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发布于 2012-09-08 06:29:11
呀呼!!我知道问题出在哪里了。实际上,我正在执行trans.commit,当它失败时,我不会在catch块中执行回滚。谢谢你的帮助。
发布于 2012-09-08 05:11:46
如果在视图中将'String.Empty‘作为AddModelError..then中的键传递,则应具有..
中出现的错误消息。
<%: Html.ValidationSummary() %>或者,如果您想将'Name‘指定为键,则
ModelState.AddModelError(Name, "Customer with same name already exists.");
<%=Html.TextBox("Name") %> <br />
<%=Html.ValidationMessage("Name") %>发布于 2012-09-08 04:51:27
如果您想要在视图中显示要添加到操作方法中的验证错误消息,则需要将模型返回到视图。当Save成功完成时,您将执行重定向到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);
}https://stackoverflow.com/questions/12325070
复制相似问题