正确的方式来使用_viewstart.cshtml和部分剃刀视图?

我正在使用_viewstart.cshtml自动将相同的剃刀布局分配给我的意见。

这是我的视图文件夹的根目录中的一个死的简单的文件,看起来像这样:

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

这比在每个视图中添加@Layout指令更干。

然而,这对Razor 部分视图提出了一个问题,因为它们运行_viewstart.cshtml的内容,因此错误地为它们分配了一个布局,这使得它们不再局部。

这是一个假设的项目,显示_viewstart.cshtml文件,共享_layout.shtml文件和部分视图(“AnonBar.cshtml”)。

示例项目结构

目前,我正在解决这个问题的方法是在每个局部视图中添加以下行:

 @{ Layout = ""; } 

这在Razor中似乎是错误的expression方式。 (请注意,与Web表单视图引擎不同,文件扩展名与部分视图相同。)

我考虑的其他选项,但更糟糕的是:

  • 把所有的部分视图放到一个公共文件夹中,这样他们就可以共享一个共同的_viewstart.cshtml。 这打破了与他们的控制器在同一个文件夹中的惯例。
  • 不使用部分视图。

这个东西是否仍然由剃刀视图引擎团队充实,还是我错过了一个基本概念?

如果从控制器return PartialView() (而不是return View() ),则不会执行_viewstart.cshtml