插入_ViewStart.cshtml

时间:2013-06-05 13:54:04

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

是否可以仅将viewstart用于特定的控制器和视图? 我在views文件夹中只使用了_Layou.cshtml文件。 现在我将_ViewStart.cshtml添加为视图文件夹中的公共视图,并将_Layout移动到共享文件夹。

这是程序结构:

Homecontroller
  public ActionResult Index()
        {
            return View();
        }

Index.cshtml
@{
    Layout = "~/Views/_Layout.cshtml";
}

_Layout.cshtml
{
//design code for Index.chtml
}

根据上面的代码,_Layout为homecontroller渲染。 完成第一行提到的更改后,我在我使用的每个控制器中获取_Layout.cshtml中的控件。 我使用近6个控制器。 如何在不干扰整个代码的情况下进行此更改。 请帮忙。

PS:我需要将_ViewStart引入程序,因为我正在将openid与我已经开发的项目集成。

2 个答案:

答案 0 :(得分:2)

  1. 您可以创建另一个_ViewStart.cshtml(例如在Views/[controller]子文件夹中),它将覆盖根目录,例如:

    @{ Layout = null; }

  2. 您只需使用ViewBag来确定是否使用布局:

    public ActionResult AnotherAction()
    {
         ....
         ViewBag.NoLayout = true;
    
         return View();
    }
    

    和您的_ViewStart

    @{
    if (ViewBag.NoLayout == null || !ViewBag.NoLayout)
         Layout = "~/Views/_Layout.cshtml";
    }
    

答案 1 :(得分:1)

您可以在Scott Guthrie的Blog

上阅读有关MVC3 Razor layouts的更多信息