我正在使用_viewstart.cshtml自动为我的视图分配相同的 Razor 布局。
这是我的 Views 文件夹根目录中的一个简单的文件,如下所示:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
这比在每个视图中添加 @Layout 指令更干。
但是,这给 Razor局部视图带来了问题,因为它们运行 _viewstart.cshtml 的内容,因此错误地为自己分配了一个布局,这使得它们,嗯,不再是局部的。
这是一个假设项目,显示了 _viewstart.cshtml 文件、共享的 _layout.shtml 文件和一个局部视图(“AnonBar.cshtml”)。
目前,我解决这个问题的方法是在每个部分视图中添加以下行:
@{
Layout = "";
}
这似乎是在 Razor 中将视图表示为部分视图的错误方式。(请注意,与 Web 表单视图引擎不同,部分视图的文件扩展名是相同的。)
我考虑过的其他选择,但更糟糕的是:
- 将所有部分视图放入一个公用文件夹,以便它们可以共享一个公用 _viewstart.cshtml。这打破了视图与其控制器位于同一文件夹中的约定。
- 不使用局部视图。
这是 Razor 视图引擎团队仍在充实的东西,还是我错过了一个基本概念?