Asp.net mvc 3 我可以在MVC3基本控制器上为ViewResults设置默认布局吗?

Asp.net mvc 3 我可以在MVC3基本控制器上为ViewResults设置默认布局吗?,asp.net-mvc-3,Asp.net Mvc 3,如果我有一个基本控制器,例如StaffBaseController,我可以使返回的任何ViewResult结果具有默认布局页面吗?e、 g StaffLayout.cshtml。我知道我可以使用文件夹结构中的_viewstart文件来设置默认布局。我只是想知道是否可以在我的基本控制器类上设置它 如果是,我该怎么做?在某些情况下是否可以覆盖默认值 谢谢 格雷姆 您可以在基本控制器中尝试类似的操作(这是从aspx项目中获取的,但应该可以针对razor进行调整): 因此,在该示例中,如果用户不是管理员

如果我有一个基本控制器,例如StaffBaseController,我可以使返回的任何ViewResult结果具有默认布局页面吗?e、 g StaffLayout.cshtml。我知道我可以使用文件夹结构中的_viewstart文件来设置默认布局。我只是想知道是否可以在我的基本控制器类上设置它

如果是,我该怎么做?在某些情况下是否可以覆盖默认值

谢谢

格雷姆

您可以在基本控制器中尝试类似的操作(这是从aspx项目中获取的,但应该可以针对razor进行调整):


因此,在该示例中,如果用户不是管理员用户,则最初定义的主模板名称(Site.master)值将更改为“股东”(股东.master)。

Graeme-很高兴这是一个简单的修复。这个问题“敲响了警钟”,通过我的TFS快速搜索发现了上述问题!!:)是的,我有一种感觉是这样的,但我们真的被推上了一个项目,所以我想其他人会比我更快地知道:)
protected override ViewResult View(string viewName, string masterName, 
    object model)
{

    // we share some views that aren't partialviews
    // therefore, we have to ensure that the Shareholder view
    // is ALWAYS attached to the logged in user if they aren't an admin user
    bool userIsAdmin = IsAuthorised(new[] { "Admin" });

    if (!userIsAdmin && !string.IsNullOrEmpty(
        ControllerContext.HttpContext.User.Identity.Name))
    {
        masterName = "Shareholder";
    }

    return base.View(viewName, masterName, model);
}