抛出异常ActionFilterAttribute OnActionExecuting

时间:2014-10-27 09:27:20

标签: c# ajax asp.net-mvc actionfilterattribute custom-action-filter

我想在ActionFilterAttribute中抛出异常,如下所示:

public override void OnActionExecuting(ActionExecutingContext filterContext) {
    base.OnActionExecuting(filterContext);

    if (!_controller.HasRoleIndex()) {
        throw new Exception(Resources.BackOffice.lblErrorPermission);
    }
}

我想要这样,因为我想在某个ajax请求中执行此代码,当用户没有权限时,发送异常然后显示消息。

我有在实现的异常中显示消息的代码,它适用于aplication的其他位置的exeptions,但是当ActionFilterAttribute的OnActionExecuting中抛出异常时,应用程序中出现未处理的异常,以及我在视图中看到的是服务器错误。

如何在不重定向到其他页面的情况下处理异常?我只想抛出异常,没有显示404错误页面。

修改

把事情放在上下文中:我有一个带有一些ajax调用的网页,我希望ajax调用有一个行为,以防在调用时发生错误,所以我在所有的ajaxs中都有这样的东西:

 $.ajax({
 ...
 error: function (e, o, errorText) { AlertMessages.SetErrorMessageAndShow(errorText); },
 ...
});

此代码显示一个带有友好用户消息的模态窗口,其中包含错误原因: 会话已过期。糟糕的电子邮件地址等

我想使用相同的代码进行验证。通过验证,我正在考虑使用ActionFilterAttribute。

但是我无法从OnActionExecuting获得如何发送和例外。

这可能吗?或者我必须返回一个特定的Json然后在javascript中根据json返回?

0 个答案:

没有答案