首页 > 解决方案 > .net MVC 链接到区域内视图的正确方法

问题描述

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

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

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

同样,到目前为止,一切都很好,但是使用完全合格的路径似乎并不优雅,我不得不认为有更好的方法。

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

区域没有使用正确的视图

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

所以我的问题是这个。是否有必要使用完全限定的路径来引用区域内的视图?是否不可能在某个区域内执行此操作:

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

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

谢谢,克里斯

标签: asp.net-mvcpathviewsareas

解决方案


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

_ViewStart.cshtml

@{
    Layout = "_Layout";
}

推荐阅读