如何在MVC3中每次加载页面时运行一个方法?

时间:2012-10-05 08:35:54

标签: asp.net asp.net-mvc-3 pageload

使用WebForms,如果我想在每个页面加载时运行一个方法,那么我会在主母版页的Page_Load()方法中调用此方法。

使用MVC3时是否有其他可能更好的解决方案?

3 个答案:

答案 0 :(得分:9)

你可以创建一个类基本控制器

 public class BaseController : Controller
{

    public BaseController()
    { 
        // your code here
    }
}

让你的每个新控制器都像

一样阻止基本控制器
public class MyController: BaseController

我也发现basecontroller非常有用,可以存储我在其他控制器中需要很多的其他功能

答案 1 :(得分:6)

我认为在MVC中执行此操作的最合适方法是使用filters
MSDN对它们进行了很好的描述,网上有很多关于它们的文章和解释,例如this one

修改 This示例甚至更好:它提供了一个简单的动作过滤器,然后在global.asax中注册,并在相关控制器中的实际Action执行之前在每个请求上执行。这样的概念允许您访问请求对象,并在实际控制器执行之前修改您想要的任何内容。

答案 2 :(得分:1)

您可以将代码放在控制器的构造函数中。 像这样:

public class FooController : Controller
{
    public FooController()
    {
        doThings();
    }