【问题标题】:.net MVC proper way to link to views within an area.net MVC 链接到区域内视图的正确方法
【发布时间】:2018-04-27 20:31:48
【问题描述】:

我有一个 .Net MVC 应用程序,其中包含几个区域,其中一个称为 Admin。当我执行 /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"; }

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

谢谢, 克里斯

【问题讨论】:

    标签: asp.net-mvc path views areas


    【解决方案1】:

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

    _ViewStart.cshtml

    @{
        Layout = "_Layout";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      相关资源
      最近更新 更多