两个视图具有相同的布局路径,但其中一个视图的服务器错误而不是另一个视图。 "在以下路径中找不到布局页面。"

时间:2014-11-27 15:14:54

标签: asp.net-mvc razor

在我的ASP.NET MVC应用程序中,当我试图找到我指定的布局时,我收到服务器错误(HttpException)。我在两个视图中为布局指定相同文件路径,但它在其中一个视图中工作,而在另一个视图中不工作。

以下是Admin/Index.cshtml顶部的代码:

@model IEnumerable<MultipleUserTesting.Data.User>

@{
    ViewBag.Title = "Admin: All Users";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

以下是Admin/Edit.cshtml顶部的代码:

@model MultipleUserTesting.Data.User 

@{ 
    ViewBag.Title = "Admin: Edit User: " + @Model.Name; 
    Layout = "∼/Views/Shared/_Layout.cshtml"; 
    } 

以下是错误消息,该消息出现在“编辑”页面上,但在“索引”页面上

  

布局页面&#34;〜/ Views / Shared / _Layout.cshtml&#34;无法在以下路径找到:&#34;〜/ Views / Admin /〜/ Views / Shared / _Layout.cshtml&#34;。

我不明白为什么它试图将指定的路径追加到Views/Admin,我感到困惑,因为Admin/Index.cshtml指定了相同的路径并且在那里工作正常。< / p>

这是我的目录结构:

file-directory-structure

如您所见,两个文件都在同一个文件夹中。是Admin/Index&#34;特殊&#34;在某种程度上,因为它是一个Index页?

希望这是足够的信息。如果需要,我可以发布堆栈跟踪。

1 个答案:

答案 0 :(得分:0)

您可以尝试删除tild标志

Layout = "/Views/Shared/_Layout.cshtml"; 

为什么使用tild符号会产生问题还不是很清楚。从正斜杠开始&#34; /&#34;将在考虑应用程序根目录的路径时工作。