关于asp.net mvc:ajax请求的基于属性的错误处理?

Attribute based error handling for ajax requests? (Is it worthwile?)

当我执行ajax.begininform操作时,返回一个部分视图,我会在一个viewdata项中发送错误信息。

当前,为了处理所有错误,我必须将所有方法包装在try catch语句中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[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);
}

我想用一个自定义的handleerrror属性来实现这一点,但是我意识到必须有很多gotchas等待被咬。是否有人试图分享他们的经历?

编辑:我最终在一个控制器类中进行了错误处理。

此错误处理控制器有2个方法:RegisterErrorHandler和RegisterModel。如果在基类OnException中发现错误时注册了错误处理程序,我只需添加resultinfo并将错误标记为已处理,并使用我在RegisterErrorHandler中设置的视图和错误标题。

这样,很容易将模型传递给错误处理程序,而且直接使用资源是很自然的,因为错误处理程序注册为方法内部的第一行,而不是方法外部的属性。


我认为这个问题的答案将帮助您:如何处理Ajax调用的控制器操作(返回partialView)中的模型状态错误。