我收到错误消息:在以下路径中找不到布局页面“ _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";
}
解决方案资源管理器:
确保在~/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
将使用您的值。
是的,我有这样
我在回答中列出了其他可能的原因。你都检查了吗?
不应该,我刚开始这个项目
那是问题!谢谢!生成的代码具有Layout =“ _Layout”,这有点令人困惑。再次感谢=)
是的,尽管可能主要是针对Resharper用户。创建新的控制器并使用Resharper快捷方式查看后,您得到的第一件事是Layout =“ _ Layout”行,我立即想到:“好极了!它知道在哪里查找模板,并且知道要查找的文件扩展名。” 但事实并非如此。因此,我也开箱即用了OP的错误消息。