我想在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返回?