添加代码在任何视图之前运行?相当于母版页面加载?

时间:2011-07-15 16:52:10

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

什么可能等同于MVC中的母版页代码隐藏页面加载?我想在每个视图返回之前检查用户是否登录了我的本地应用程序或Facebook或Twitter。

4 个答案:

答案 0 :(得分:5)

几种选择。

创建一个基本控制器并使用它的初始化方法。让你的其他控制器继承它。这可能最接近于MasterPage中的代码如何工作。

public abstract class BaseController : Controller
{
    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
       //Do Stuff
    }
}

这是我想要在任何视图之前运行的代码的方法,以及在布局视图中设置的代码(即:在每个页面上使用的布局内容)。

或者仍然支持Global.asax,您可以使用Application_BeginRequest或Application_PostAcquireRequestState。

答案 1 :(得分:3)

请改用ActionFilters。在框架中已经有一个授权过滤器。继承它并根据你的意愿弯曲它。

详细了解操作过滤器here

答案 2 :(得分:0)

您使用的是母版页吗?

如果是这样,只需在那里添加对代码的调用(将其保留为方法调用并在另一个类中实现逻辑)。

或者,从System.Web.UI.View派生一个新的View类,覆盖OnPreRender或OnLoad事件,并将其用作您自己视图的基类。

答案 3 :(得分:0)

使用局部视图并将其包含在母版页/布局中。

您也可以将其与部分操作结合使用,请参阅此处 - asp.net MVC partial view controller action

默认的mvc3 vstudio模板在views / shared目录中包含一个_logonpartial文件,可能是一个很好的起点