22

我收到错误:在以下路径中找不到布局页面“_Layout”:“~/Views/Home/_Layout”。

但布局页面位于此路径:“~/Views/Shared/_Layout”

有什么问题?

我刚开始这个项目,它看起来像这样:

控制器:

namespace Testing.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }
    }
}

索引视图:

@model dynamic

@{
    ViewBag.Title = "title";
    Layout = "_Layout";
}

<h2>title</h2>

_ViewStart.cshtml:

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

解决方案资源管理器:

解决方案资源管理器:

4

6 回答 6

36

确保在您的~/Views/_ViewStart.cshtml文件中设置了正确的路径:

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

此外,如果在您的视图中您要覆盖布局,请确保为此布局指定正确的路径。除此之外,可能还有一些服务器端代码正在设置布局(例如自定义操作过滤器,或者ViewResult允许指定布局的重载,......)。


更新:

您似乎已经像这样设置了布局:

@{ 
    ViewBag.Title = "title"; 
    Layout = "_Layout"; 
} 

您需要将布局的位置指定为绝对路径:

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

但更好的方法是在你的Index视图中去掉这个 Layout 设置:

@{ 
    ViewBag.Title = "title"; 
}

现在_ViewStart.cshtml将使用您的值。

于 2013-02-17T17:13:57.117 回答
8

一旦我部署了我的服务,我就会出现同样的问题,但无法在本地复制。对我来说,问题是视图没有为其构建操作设置。所以错误是正确的,因为该文件在服务器上不存在,尽管它存在于存储库中。

解决此问题的解决方案:

  1. 右键单击缺少的视图并打开属性 视图属性
  2. 确保构建操作设置为内容
  3. 更新 csproj 文件以匹配新的构建操作。.csproj 文件
于 2019-01-08T14:07:09.403 回答
1

使用错误的波浪号也会产生此错误。

确保使用键盘上的波浪号“~”。

如果您从书中复制代码,波浪号可能是无效字符(请注意,Unicode 中有多个波浪号)。

于 2018-10-18T17:08:56.413 回答
1

在您的情况下,我看不到_layout.cshtml..您必须提供文件的正确路径_layout.cshtml..如果该文件存在于同一个视图文件夹中而_ViewStart.cshtml无需添加.cshtml部分。但是如果您从另一个文件夹中引用它,请确保添加.cshtml这样的部分_layout.cshtml..

所以你必须添加正确的路径_layout.cshtml。像下面

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
    
}
于 2020-07-26T15:43:59.937 回答
0

而不是这个

@{ 
    ViewBag.Title = "title"; 
    Layout = "_Layout"; 
} 

索引视图将是这样的

@{ 
    ViewBag.Title = "title"; 
    Layout = "~/Views/Shared/_Layout.cshtml";
}
于 2020-04-22T05:14:03.240 回答
0

也许你有一个 PartialView,现在你想在 ActionResult 方法中返回 View 而不是 PartialView。

于 2020-09-12T10:24:31.747 回答