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

ASP.NET Core视图中Section Header显示异常问题排查

ASP.NET MVC 5 迁移至 ASP.NET Core 6 图标显示问题排查与修复

问题现象

将运行于.NET 4.8的ASP.NET MVC 5应用迁移至ASP.NET Core 6 MVC后,Index.cshtml中更新后的@section header代码改用@await Html.PartialAsync调用_ModeHeader.cshtml,预期页面显示图标+文本“Salaries”,但实际显示**“Normal”+文本“Salaries”**。

相关代码

原MVC 5代码

@section header
{
    @Html.Partial("~/Views/Shared/DisplayTemplates/_ModeHeader.cshtml", Model.Mode, new ViewDataDictionary { { "text", "Salaries" }, { "icon", "fa-money-check" } })
}

更新后的ASP.NET Core代码

@section header {
    @await Html.PartialAsync("~/Views/Shared/DisplayTemplates/_ModeHeader.cshtml", Model.Mode, new ViewDataDictionary(ViewData) { { "text", "Salaries" }, { "icon", "fa-money-check" } })
}

_ModeHeader.cshtml代码

@using Project.Extensions.MVC
@using Project.Models

@model Enums.Mode

@{
    if (!ViewData.ContainsKey("icon"))
    {
        ViewData["icon"] = "fa-list-alt";
    }
}

<div class="border-bottom row">
    <div class="col">
        <span class="h1">
            @switch (Model)
            {
                case Enums.Mode.None:
                    break;
                case Enums.Mode.Browse:
                    @IconExtensions.BuildColoredIconTag(ViewData["icon"].ToString(), "text-info")
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
            @ViewData["text"]
        </span>
    </div>
</div>

存在问题的IconExtensions.cs代码片段

public static HtmlString BuildColoredIconTag(string iconName, string color)
{
    var icon = BuildInternalColoredIconTag(iconName, color);
    var finalHtml = icon.TagRenderMode.ToString();// 错误行:此处应调用icon.ToString(TagRenderMode.Normal)
    return new HtmlString(finalHtml);
}

问题根源

错误代码中调用icon.TagRenderMode.ToString()会返回TagRenderMode枚举的字符串值(即“Normal”),而非生成正确的图标HTML标签。原MVC 5中使用icon.ToString(TagRenderMode.Normal)来生成图标对应的HTML,迁移时未正确转换这个调用逻辑,导致输出了枚举名称而非预期的图标元素。

修复方案

将IconExtensions.cs中的错误行替换为:

var finalHtml = icon.ToString(TagRenderMode.Normal);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:15:33