找不到布局页面

时间:2013-02-17 17:11:54

标签: asp.net-mvc-4

我收到错误:在以下路径中找不到布局页面“_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:

Solution Explorer:

6 个答案:

答案 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尚未为其构建操作设置。因此错误是正确的,因为尽管文件存在于存储库中,但服务器上不存在该文件。

解决方案:

  1. 右键单击丢失的视图,然后打开属性 View Properties
  2. 确保将构建操作设置为 Content
  3. 更新csproj文件以匹配新的构建操作。 .csproj file

答案 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。