.net MVC 正确的方法 link 到一个区域内的视图

.net MVC proper way to link to views within an area

我有一个带有几个区域的 .Net MVC 应用程序,其中一个称为管理。当我执行 /Admin/Home/Index 时,Admin 区域 Home 控制器中的 Index() 方法执行并返回正确的 Index.cshtml。到目前为止,还不错。

我的问题与 _Layout.cshtml 有关。我希望每个区域和主站点的布局都不同。为此,我已将 _ViewStart.cshtml 添加到我的管理区域的 Views 文件夹中,并且在该 _ViewStart 中我有以下内容:

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

同样,到目前为止,还不错,但是使用完全限定的路径似乎不够优雅,我不得不认为有更好的方法。

这里问了一个类似的问题:

Area doesn't use the right view

给出的一个答案说完全合格的路径是要走的路,尽管它没有被 OP 标记为答案。

所以我的问题是这样的。是否有必要使用完全限定的路径来引用区域内的视图?一个地区是不是不能这样:

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

根据正在执行的控制器,视图引擎是否无法解决我想要区域共享文件夹中的视图而不是主站点共享文件夹中的视图的问题?

谢谢, 克里斯

区域中的视图将自动在该区域的视图文件夹中查找 _ViewStart.cshtml_ViewImports.cshtml 文件。对于您的情况,我的建议是将 _ViewStart.cshtml 文件放入您区域的视图文件夹中(不在其共享文件夹中!)并让它引用您选择的 _Layout 文件,例如:

_ViewStart.cshtml

@{
    Layout = "_Layout";
}