我有一个带有几个区域的.Net MVC应用程序,其中一个叫做Admin。当我执行/ Admin / Home / Index时,Admin区域Home Controller中的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";
}
根据正在执行的控制器,视图引擎是否无法解析我想要来自区域共享文件夹的视图,而不能解析来自主站点共享文件夹的视图?
谢谢, 克里斯
答案 0 :(得分:0)
您在区域内的视图将自动查找该区域中的“视图”文件夹中的_ViewStart.cshtml
或_ViewImports.cshtml
文件。对于您的情况,我的建议是将一个_ViewStart.cshtml
文件放入“区域”的“视图”文件夹中(而不是在它们的“共享”文件夹中!),并使其引用您选择的_Layout
文件,例如:
@{
Layout = "_Layout";
}