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

ASP.NET Core 6中如何将SQL Server读取的字符串部分设为粗体?

解决方案

你的需求完全可以实现,问题出在Razor视图的HTML编码机制上——默认情况下,Razor会把输出的文本自动做HTML编码,导致你存在数据库里的<b>标签被转义成&lt;b&gt;,无法被浏览器解析为粗体格式。下面提供两种可行的解决办法:

方法一:直接输出未编码的HTML(适合数据库已存储带标签的内容)

在Razor视图中,用@Html.Raw()方法代替直接输出@col.Label,它会跳过HTML编码,让浏览器解析标签:

<div class="col-md-4"><label></label></div>
@foreach (var col in Model.HistoryColumns)
{
    <div class="col-md-2"><label>@Html.Raw(col.Label)</label></div>
}
</div>

⚠️ 注意:如果col.Label的内容来自用户输入,要警惕XSS攻击风险,确保内容是可信的(比如仅由后台维护,不允许用户提交自定义内容)。

方法二:后端处理字符串后输出(适合数据库存储原始文本)

如果不想在数据库里存储HTML标签,可以在后端读取数据后,动态给指定文本添加<b>标签,再传递到视图:

修改控制器代码:

// 先获取原始数据
var historyColumns = _HistoryLabelsRepository.EnabledColumns().ToList();

// 遍历处理每个标签文本
foreach (var col in historyColumns)
{
    string targetText = "1st degree relative (18a)";
    if (col.Label.Contains(targetText))
    {
        // 替换目标文本为带粗体标签的内容
        col.Label = col.Label.Replace(targetText, $"<b>{targetText}</b>");
    }
}

var theViewModel = new TheViewModel
{
     HistoryColumns = historyColumns,
};

return View("History", theViewModel);

然后视图里同样使用@Html.Raw(col.Label)来输出处理后的内容。

如果需要处理多个不同的目标文本,可以把目标文本做成配置项(比如存到配置文件或数据库),让逻辑更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:55:05