当我执行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中设置的视图和错误标题。
这样很容易将模型送到错误处理程序中,并且很自然地直接使用Resources,因为错误处理程序被注册为方法内的第一行而不是外部的属性。
答案 0 :(得分:1)