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

在VS2017的.NET Core 2.0项目中如何在Razor视图显示HTML字符串?

解决Razor视图中显示HTML字符串的问题

你说得对,@Html.Display()确实不是正确的方式——这个方法默认会对输出内容进行HTML编码,导致你的HTML标签被当成纯文本显示,而不是渲染成网页元素。结合你的.NET Core 2.0环境,给你两种靠谱的解决方案:

方案一:在ViewModel中使用IHtmlString类型(推荐)

既然你已经引用了Microsoft.AspNetCore.Html.Abstractions包,我们可以直接用包里的IHtmlString(或者它的实现类HtmlString)标记HTML属性,让Razor知道这是安全的HTML内容,不需要编码。

  1. 修改QuickResultViewModel,把ResultHTML的类型改成IHtmlString:
using Microsoft.AspNetCore.Html;

namespace EDMTLC.Models
{
    public class QuickResultViewModel
    {
        public IHtmlString ResultHTML { get; set; }
    }
}
  1. 在控制器中,将生成的HTML字符串转换成HtmlString实例:
// 假设yourHtmlContent是你要返回的HTML内容
var viewModel = new QuickResultViewModel
{
    ResultHTML = new HtmlString(yourHtmlContent)
};
return View(viewModel);
  1. 视图里直接输出属性即可,Razor会自动渲染HTML:
@model EDMTLC.Models.QuickResultViewModel
<div>@Model.ResultHTML</div>
<div>TEST</div>

方案二:在视图中使用@Html.Raw()(临时场景可用)

如果不想修改ViewModel的类型,也可以在视图里用Html.Raw()方法强制输出未编码的HTML。不过要注意:这个方法会跳过编码,一定要确保HTML内容是安全的(比如不是用户输入的内容),否则会有XSS攻击风险。

修改后的视图代码:

@model EDMTLC.Models.QuickResultViewModel
<div>@Html.Raw(Model.ResultHTML)</div>
<div>TEST</div>

两种方法里,方案一更符合ASP.NET Core的设计规范,它明确区分了普通文本和HTML内容,也能让其他开发者一眼看出这个属性的用途。

内容的提问来源于stack exchange,提问作者Srééjîth Náîr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:03:56