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

VB.NET ASP.NET Core Razor视图调用PartialAsync报BC37058错误

问题原因

错误 BC37058 的核心触发原因是:VB.NET Razor 引擎和 C# Razor 的行为存在差异,不会自动为包含顶层 @await 表达式的视图生成带 Async 修饰符的执行方法,当视图中分散存在多个 await 调用、基类配置错误、路径解析异常时,就会抛出该编译错误。
你当前代码里还存在路径不一致的隐患:部分分部视图指向 ~/Views/Shared/ 文件夹,部分指向 ~/Views/_Shared/ 文件夹,路径匹配失败也会加剧编译识别异常。

解决方法

按优先级依次尝试,绝大多数场景下第一种方案即可直接解决问题:

  • 使用官方推荐的<partial>标签助手替代手写Html.PartialAsync调用,完全绕开VB Razor对await的识别bug,不需要修改任何项目配置,写法如下:
    <!-- 替换原来的@await Html.PartialAsync写法 -->
    <partial name="~/Views/Shared/_title_meta.vbhtml" />
    @RenderSection("styles", False)
    <partial name="~/Views/Shared/_head_css.vbhtml" />
    
    <!-- Begin page -->
    <div id="layout-wrapper">
        <partial name="~/Views/Shared/_topbar.vbhtml" />
        <partial name="~/Views/Shared/_sidebar.vbhtml" />
        <div class="main-content">
            <div class="page-content">
                <div class="container-fluid">
                    <partial name="~/Views/Shared/_page_title.vbhtml" />
                    @RenderBody()
                </div>
            </div>
            <partial name="~/Views/Shared/_footer.vbhtml" />
        </div>
    </div>
    @RenderSection("externalhtml", False)
    <partial name="~/Views/Shared/_right_sidebar.vbhtml" />
    @RenderSection("scripts", false)
    
    注意先统一所有分部视图的实际路径,不要混用Shared和_Shared文件夹命名。
  • 如果坚持使用Html.PartialAsync写法,先确认项目根目录的_ViewImports.vbhtml文件存在且配置正确,没有该文件就手动新建,填入以下配置:
    @Imports Microsoft.AspNetCore.Mvc.Razor
    @inherits RazorPage(Of TModel)
    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    
  • 若仍存在编译错误,可直接改用同步渲染方法@Html.Partial(),去掉await和方法名的Async后缀即可,常规业务场景下同步渲染分部视图不会出现可感知的性能问题:
    @Html.Partial("~/Views/Shared/_topbar.vbhtml")
    
  • 检查项目.vbproj文件的Razor编译配置,确认存在以下配置项(.NET 6+版本适用),缺失则补上:
    <PropertyGroup>
      <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
      <UseRazorSourceGenerator>true</UseRazorSourceGenerator>
    </PropertyGroup>
    <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="匹配你的项目.NET版本号" />
    </ItemGroup>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:48:19