2

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

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

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

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

我已经实现了在异常中显示消息的代码,它适用于应用程序其他地方的异常,但是当在 ActionFilterAttribute 的 OnActionExecuting 中引发异常时,应用程序中出现未处理的异常,以及我得到了什么该视图是服务器错误。

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

编辑:

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

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

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

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

但我无法从 OnActionExecuting 中获取如何发送和异常。

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

4

0 回答 0