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

如何将常规字符串转为IHtmlString?AspNetCore类型转换报错排查

问题根源与解决方法

你遇到的问题核心是混用了ASP.NET Framework和ASP.NET Core两个不同框架的类型:

  • 你引用的System.Web.IHtmlString是旧版ASP.NET Framework的类型
  • 而Microsoft.AspNetCore.Html.HtmlString属于ASP.NET Core框架,两者分属不同程序集,没有兼容关系,自然无法互相转换或赋值

微软的示例代码是对应各自框架实现的:ASP.NET Core版本的Raw方法返回的是该框架命名空间下的IHtmlString(或IHtmlContent),而非System.Web下的类型,所以能正常运行。

修复步骤

  1. 移除不必要的命名空间引用:删除代码中的using System.Web;,ASP.NET Core项目不需要这个旧框架的命名空间。
  2. 统一类型归属:将方法的返回类型改为ASP.NET Core框架下的Microsoft.AspNetCore.Html.IHtmlString,或者更通用的IHtmlContent(HtmlString已实现这个接口,ASP.NET Core推荐使用IHtmlContent)。

修正后的代码示例

using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;

public static class HtmlHelperExtensions
{
    public static IHtmlString Text(this IHtmlHelper helper, string text)
    {
        return new HtmlString(TextToHtml.Transform(text));
    }
}

或者使用更通用的IHtmlContent:

using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;

public static class HtmlHelperExtensions
{
    public static IHtmlContent Text(this IHtmlHelper helper, string text)
    {
        return new HtmlString(TextToHtml.Transform(text));
    }
}

另外你尝试强制转换失败是必然的,因为两个IHtmlString是完全不同的类型,没有继承或实现关系,无法通过强制转换兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:38:25