Я хочу создать исключение в ActionFilterAttribute следующим образом:
public override void OnActionExecuting(ActionExecutingContext filterContext) {
base.OnActionExecuting(filterContext);
if (!_controller.HasRoleIndex()) {
throw new Exception(Resources.BackOffice.lblErrorPermission);
}
}
Я хочу, чтобы это было так, потому что я хочу выполнить этот код в каком-то запросе ajax, и когда у пользователя нет разрешений, отправить исключение, а затем показать сообщение.
У меня реализован код показа сообщения в исключении, и он работает для исключений в других местах приложения, но когда возникает исключение в OnActionExecuting атрибута ActionFilterAttribute, необработанное исключение в приложении и то, что я получаю в представление является ошибкой сервера.
Как я могу обработать исключение без перенаправления на другую страницу? Я только хочу создать исключение, не показывать страницу с ошибкой 404.
Изменить:
Чтобы поместить вещи в контекст: у меня есть веб-страница с некоторыми вызовами ajax, я хотел, чтобы вызовы ajax имели поведение в случае возникновения ошибки во время вызова, поэтому у меня есть что-то подобное во всех моих ajax:
$.ajax({
...
error: function (e, o, errorText) { AlertMessages.SetErrorMessageAndShow(errorText); },
...
});
Этот код показывает модальное окно с дружественным сообщением пользователя с причиной ошибки: Срок действия сеанса истек. Неверный адрес электронной почты и т. д.
Я хочу использовать тот же код для проверки. И с проверкой я думал об использовании ActionFilterAttribute.
Но я не могу понять, как отправить и исключить из OnActionExecuting.
Это возможно? или я должен вернуть определенный Json, а затем в javascript действовать в соответствии с возвращенным json?