Я хочу проверить некоторые вещи о состоянии сеанса, пользовательском агенте и т.д., и, возможно, предпринять действия и вернуть специальный вид ДО того, как метод контроллера получает возможность выполнить. Например:
Чаще всего:
Запросы пользователей Главная/Индекс
Система проверяет, чтобы x!= 0.
x не равен нулю, поэтому Home/Index controller выполняется как обычно.
Но, иногда:
Запросы пользователей Главная/Индекс
Система проверяет, чтобы x!= 0.
x равно нулю. Пользователь должен быть уведомлен, и запрошенное действие контроллера не может быть выполнено.
Я думаю, что это связано с использованием ActionFilters. Но я прочитал о них, и я не понимаю, могу ли я вытеснить метод контроллера и вернуть представление до его выполнения. Я уверен, что могу выполнить код перед запуском метода контроллера, но как я могу заставить его работать в некоторых случаях и возвращать пользовательский вид или напрямую обращаться к другому методу контроллера?
Обновление: я реализовал решение RM. Это то, что я сделал:
public class MyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (myValue == wrongValue)
{
filterContext.Result = new ViewResult{ViewName = "Notice"};
}
base.OnActionExecuting(filterContext);
}
}
Теперь, когда myValue ошибочен, эти пользователи получают представление "Уведомление", и запрошенный контроллер никогда не выполняется. Чтобы выполнить эту работу, я применил ее к ControllerBase, которую наследуют все мои контроллеры.