Выдать исключение ActionFilterAttribute OnActionExecuting

Я хочу создать исключение в 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?


person Albert Cortada    schedule 27.10.2014    source источник
comment
stackoverflow.com/questions/15203918/catch-404-error -in-mvc4 взгляните на это   -  person Tushar    schedule 27.10.2014
comment
Эти ответы, кажется, перенаправляют на другую страницу, и я не хочу переходить на другую страницу. Я хочу, чтобы контроллер возвращал исключение, а не перенаправление на другую страницу.   -  person Albert Cortada    schedule 27.10.2014
comment
что значит вернуть исключение? вы должны что-то показать пользователю. что что-то обычно ведет на страницу с ошибкой.   -  person DLeh    schedule 27.10.2014
comment
Я отредактировал вопрос, пытаясь объяснить, почему я хочу создать исключение.   -  person Albert Cortada    schedule 27.10.2014