You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2013 MVC5.1报错:Layout不存在于当前上下文

针对Mvc 5.1 + VS2013的"The name 'Layout' does not exist in the current context"错误排查

既然你已经试过Stack Overflow上的常规方案还没解决,那咱们聚焦Mvc5.1和VS2013更新后的特定配置点来检查——版本不匹配或配置节缺失是这类问题的高发原因:


1. 检查项目根目录的web.config配置

确认程序集引用版本正确

Mvc5.1对应Razor 3.1.0.0版本,你需要确保根web.config里的assemblies节点包含正确版本的引用,不能混有旧版本:

<assemblies>
  <add assembly="System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add assembly="System.Web.Razor, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add assembly="System.Web.WebPages, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>

确认configSections的Razor配置节版本匹配

根web.config的configSections里的razor组必须对应3.1.0.0版本,否则会导致Razor引擎加载错误:

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

2. 检查/Views/web.config的核心配置(重中之重)

这个文件的配置直接决定视图的编译环境,最容易出问题:

确认Razor Host工厂和页面基类正确

必须指定Mvc专属的Razor主机工厂,并且页面基类要继承System.Web.Mvc.WebViewPage(不是普通WebPages的基类):

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
      <!-- 别漏掉这些核心Mvc命名空间,否则很多内置属性/方法都会找不到 -->
    </namespaces>
  </pages>
</system.web.webPages.razor>

确认编译节点的程序集引用

和根web.config保持版本一致:

<compilation>
  <assemblies>
    <add assembly="System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Razor, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

3. 其他容易忽略的排查点

  • 视图文件的继承指令:检查报错的.cshtml文件里有没有手动修改@inherits指令,如果改成了System.Web.WebPages.WebViewPage,就会丢失Mvc的Layout属性,改回System.Web.Mvc.WebViewPage即可。
  • 清理缓存与重新生成:删除项目下的bin、obj目录,然后在VS里执行「清理解决方案」→「重新生成解决方案」,VS更新后残留的旧编译文件可能导致版本冲突。
  • NuGet包完整性:打开NuGet包管理器,确认Microsoft.AspNet.Mvc是5.1.x版本,没有同时安装其他版本的Mvc包。如果有冲突,先卸载所有Mvc相关包,再重新安装5.1版本。
  • 视图目录位置:确保你的视图文件都在/Views目录下(或Area的Views子目录),如果放在其他目录,不会自动应用/Views/web.config的配置,也会导致找不到Layout。

内容的提问来源于stack exchange,提问作者Sumedha Vangury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:21:14