基于属性的ajax请求的错误处理? (值得吗?)

时间:2011-05-05 07:33:19

标签: asp.net-mvc attributes error-handling

当我执行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,因为错误处理程序被注册为方法内的第一行而不是外部的属性。

1 个答案:

答案 0 :(得分:1)