如何在每个ActionResult方法中运行一些代码并在必要时返回结果?

时间:2011-12-23 02:58:45

标签: asp.net-mvc initialization actionresult

我需要在每个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 个答案:

答案 0 :(得分:1)

您可以使用Action Filters执行此操作。

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

然后您可以将[MyActionFilter]添加到控制器和/或操作