我收到错误:在以下路径中找不到布局页面“_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";
}
Solution Explorer:
答案 0 :(得分:27)
确保在~/Views/_ViewStart.cshtml
文件中设置了正确的路径:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
此外,如果在视图中覆盖布局,请确保为此布局指定了正确的路径。除此之外,可能还有一些服务器端代码正在设置布局(例如自定义操作过滤器,或允许指定布局的ViewResult
重载,...)。
更新:
您好像已经设置了这样的布局:
@{
ViewBag.Title = "title";
Layout = "_Layout";
}
您需要将布局的位置指定为绝对路径:
@{
ViewBag.Title = "title";
Layout = "~/Views/Shared/_Layout.cshtml";
}
但更好的方法是在Index
视图中删除此布局设置:
@{
ViewBag.Title = "title";
}
现在将使用_ViewStart.cshtml
的值。
答案 1 :(得分:1)
使用错误的波浪号也会产生此错误。
确保在键盘上使用波浪号“〜”。
如果您从书中复制了代码,则波浪号可能是无效字符(请注意,Unicode中有多个波浪号)。
答案 2 :(得分:1)
部署服务后,我也出现了同样的问题,但是无法在本地复制。对我而言,问题在于View尚未为其构建操作设置无。因此错误是正确的,因为尽管文件存在于存储库中,但服务器上不存在该文件。
解决方案:
答案 3 :(得分:0)
代替这个
@{
ViewBag.Title = "title";
Layout = "_Layout";
}
索引视图将是这样
@{
ViewBag.Title = "title";
Layout = "~/Views/Shared/_Layout.cshtml";
}
答案 4 :(得分:0)
在您的情况下,我看不到_layout.cshtml
..您必须提供指向_layout.cshtml
文件的正确路径。.如果该文件与{{1}在同一视图文件夹中}无需添加_ViewStart.cshtml
部分。
但是如果您从另一个文件夹引用它,请确保添加.cshtml
像这样的.cshtml
..
,因此您必须添加正确的路径_layout.cshtml
。像下面一样
_layout.cshtml
答案 5 :(得分:0)
也许您有PartialView,现在想在ActionResult方法中返回View而不是PartialView。