我正在使用_viewstart.cshtml to automagically assign the same Razor Layout来查看我的观点。
这是我的Views文件夹根目录中的一个死的简单文件,如下所示:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
这比将@Layout指令添加到每个视图更加干燥。
然而,这对Razor 部分视图造成了问题,因为它们运行_viewstart.cshtml的内容,因此错误地为自己分配了布局,这使得它们不再是局部的。
这是一个假设项目,显示_viewstart.cshtml文件,共享_layout.shtml文件和部分视图(“AnonBar.cshtml”)。
目前,我解决这个问题的方法是在每个局部视图中添加以下行:
@{
Layout = "";
}
这似乎是在Razor中将视图表示为部分视图的错误方法。 (请注意,与Web表单视图引擎不同,部分视图的文件扩展名相同。)
我考虑过的其他选项,但更糟糕的是:
这是Razor视图引擎团队仍在充实的东西,还是我错过了一个基本概念?
答案 0 :(得分:233)
如果您return PartialView()
来自您的控制器(而非return View()
),则_viewstart.cshtml
将不会被执行。