是否可以仅将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与我已经开发的项目集成。
答案 0 :(得分:2)
您可以创建另一个_ViewStart.cshtml
(例如在Views/[controller]
子文件夹中),它将覆盖根目录,例如:
@{ Layout = null; }
您只需使用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
的更多信息