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

ASP.NET Core MVC中_Layout.cshtml引用外部分部视图报错求助

解决方案

问题原因

ASP.NET Core MVC的部分视图(Partial View)默认只会在~/Views/、~/Views/Shared/等视图相关目录下搜索,wwwroot是静态资源存储目录,不在默认的视图查找路径范围内,所以直接用@Html.Partial无法找到该目录下的.cshtml文件。

可行解决办法

办法一:遵循框架约定(推荐)

将header.cshtml移动到~/Views/Shared/目录下,之后在_Layout.cshtml中直接使用以下代码即可引入:

@Html.Partial("header")

或者使用更符合ASP.NET Core的标签助手写法:

<partial name="header" />

办法二:自定义视图引擎搜索路径

如果不想移动文件,可通过配置视图引擎,将wwwroot/inetpub/include目录添加到视图搜索路径中:

  1. 在项目的Program.cs(.NET 6及以上版本)或Startup.cs(旧版本)中,修改服务配置代码:
builder.Services.AddControllersWithViews()
    .AddRazorOptions(options =>
    {
        // 添加自定义视图搜索路径,{0}代表视图名称(不含后缀)
        options.ViewLocationFormats.Add("/wwwroot/inetpub/include/{0}.cshtml");
    });
  1. 配置完成后,在_Layout.cshtml中使用以下任一方式引入:
@Html.Partial("header")
<!-- 或者指定完整路径 -->
@Html.Partial("/wwwroot/inetpub/include/header")

办法三:若仅为静态HTML内容的替代方案

如果header.cshtml中没有Razor语法,只是纯HTML内容,可将其重命名为header.html,然后在_Layout.cshtml中通过读取文件内容的方式引入:

@await System.IO.File.ReadAllTextAsync(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/inetpub/include/header.html"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:55:25