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

ASP.Net Core 2.0中_ViewStart.cshtml未被视图读取的问题排查

解决ASP.NET Core 2.0中_ViewStart.cshtml不生效的问题

嘿,我来帮你搞定这个问题!你遇到的情况其实是因为ASP.NET Core里_ViewStart.cshtml的工作逻辑和.NET Framework 4.5有明显区别,尤其是文件放置的位置要求不一样。

核心问题:_ViewStart.cshtml的位置放错了

在ASP.NET Core中,_ViewStart.cshtml的查找路径不包含Views/Shared目录!它的查找逻辑是:当渲染某个视图时,会从该视图所在的目录开始,逐级向上遍历到Views根目录,只会读取这些位置的_ViewStart.cshtml。而你把它放在了Views/Shared下,这个位置不在默认的查找链里,所以Index视图根本找不到它。

快速解决步骤

  1. 移动_ViewStart.cshtml到正确位置
    把你现在的Views/Shared/_ViewStart.cshtml直接移动到Views/_ViewStart.cshtml(也就是Views根目录下)。这样所有视图都会自动继承这个文件里的Layout设置。

  2. 确认Startup.cs的MVC配置
    因为你用的是空站点模板,默认可能没有启用MVC相关配置,需要确保Startup.cs里有以下代码:

    • 在ConfigureServices方法中添加:
      services.AddMvc();
      
    • 在Configure方法中添加(确保在app.UseStaticFiles()之后):
      app.UseMvc(routes =>
      {
          routes.MapRoute(
              name: "default",
              template: "{controller=Home}/{action=Index}/{id?}");
      });
      

    空模板默认可能没有这些配置,会导致视图引擎无法正常识别_ViewStart的存在。

  3. 验证视图目录结构
    确保你的Index.cshtml放在正确的目录下,比如Views/Home/Index.cshtml(对应默认路由的Home控制器Index方法),这样视图引擎才能正确找到Views根目录下的_ViewStart。

额外说明:ASP.NET Core的_ViewStart查找顺序

举个例子,当渲染Views/Home/Index.cshtml时,系统会按以下顺序查找_ViewStart:

  • Views/Home/_ViewStart.cshtml(优先读取当前视图目录的设置)
  • Views/_ViewStart.cshtml(其次读取根目录的全局设置)
    完全不会去Views/Shared目录找,这是和.NET Framework最关键的区别之一。

做完这些调整后,你再注释掉Index.cshtml里的Layout行,按F5调试应该就能正常加载布局了!

内容的提问来源于stack exchange,提问作者Matthew Verstraete

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:30