我希望在ASP.NET MVC3中调用每个操作时执行代码

时间:2012-07-25 12:24:16

标签: asp.net-mvc-3 action-filter

我是MVC3的新手,我的网站有一个设置,如果该网站是开放的。所以,我需要在调用每个动作时检查这个值。

这个想法就像:

public ActionResult SomeAction()
{
    if(!settings.SiteIsOpen)
    {
        // redirect to siteclosed page
    }
    // someaction logic...
}

我知道在MVC3中有一些名为Filter的东西,需要注册RegisterGlobalFilters。我想使用此功能,但我不知道实现它的详细步骤。

任何人都可以帮助我吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您可能必须创建一个自定义操作过滤器并像这样装饰您的Action结果

     [CustomActionFilter]
     public ActionResult SomeAction()
     {
     }

在CustomActionFilter中,您必须实现抽象类ActionFilterAttribute

    public class CustomActionFilter : ActionFilterAttribute
    {
       public override void OnActionExecuting(ActionExecutingContext filterContext)
       {
        // your logic here
       }
    }

ASP.NET MVC框架在调用使用您的操作过滤器属性标记的任何操作方法之前,将调用操作过滤器的OnActionExecuting方法。

有关详细信息,请点击此链接http://msdn.microsoft.com/en-us/library/dd381609.aspx

答案 1 :(得分:1)

看看ActionFilterAttribute。它应该让你开始你想去的地方。您只需要确定要在哪里申请您的行动。