【发布时间】:2011-05-05 07:33:19
【问题描述】:
当我将 Ajax.BeginForm 发布到返回部分视图的操作时,我会在 ViewData 项中发送错误信息。
目前,为了处理所有错误,我必须将所有方法包装在 try catch 语句中。
[HttpPost, ValidateAntiForgeryToken]
public virtual ActionResult Save(int id, FormCollection form)
{
MyModel model;
try
{
...do stuff...
}
catch(Exception ex)
{
...log...
ViewData["ResultInfo"] = new ResultInfo(false, Resource.SAVE_NOT_SAVED, someErrorMessage);
}
return PartialView("Folder/SomeView", model);
}
我想用一个自定义的 HandleError 属性来做到这一点,但我意识到肯定有很多陷阱在等待解决。有没有人尝试过并想分享他们的经验?
编辑:
我最终在控制器基类中进行了错误处理。
这个 ErrorHandlingController 有 2 个方法; RegisterErrorHandler 和 RegisterModel。如果在基类 OnException 中发现错误时发现错误处理程序已注册,我只需添加 ResultInfo 并将错误标记为已处理,并使用我在 RegisterErrorHandler 中设置的视图和错误标题。
这样很容易将模型获取到错误处理程序,并且很自然地直接使用资源,因为错误处理程序注册为方法内部的第一行,而不是方法外部的属性。
【问题讨论】:
标签: asp.net-mvc attributes error-handling