Как запустить некоторый код в каждом методе ActionResult и вернуть результат в случае необходимости? - PullRequest
1 голос
/ 23 декабря 2011

Мне нужно запускать определенную функцию в каждом ActionResult и возвращать определенное значение, если необходимо.

Скажем, имя этой функции A().Я могу сделать это вручную:

ActionResult Index() {
     if (...) return A();
     ...
}

ActionResult About() {
     if (...) return A();
}

Или я могу использовать метод Initialize():

override void Initialize(RequestContext r) {
    A(); // Can't do a return here
}

Но проблема в том, что я не могу вернуть значение ActionResult, так какэто пустота

Есть ли способ сделать это?

1 Ответ

1 голос
/ 23 декабря 2011

Вы можете сделать это с помощью Фильтры действий .

public class MyActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (...) {
            // modify filterContext as needed
        }
    }
}

Затем вы можете добавить [MyActionFilter] к контроллерам и / или действиям

...