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

后台代码给BulletedList添加图片标签渲染为转义文本的问题咨询

解决BulletedList中HTML标签被转义的问题

兄弟,你遇到的问题是因为ASP.NET的BulletedList默认会对ListItem的文本内容进行HTML编码,所以你写的<img>标签被转成了实体字符(&lt;img...&gt;),自然没法渲染成图片。给你两个靠谱的解决办法:

方法一:直接添加Image控件到ListItem

这种方法最稳妥,完全避开编码问题,符合ASP.NET控件开发的规范:

var tmpRBL = new BulletedList();
var tmpItem = new ListItem();

// 创建Image服务器控件
Image imgControl = new Image();
imgControl.ImageUrl = ImageUrl;
// 可以设置alt属性,提升页面的可访问性
imgControl.AlternateText = column.ColumnName.Split('_')[2];

// 将Image控件添加到ListItem的Controls集合中
tmpItem.Controls.Add(imgControl);
tmpRBL.Items.Add(tmpItem);

这样渲染时,服务器会自动输出正确的<img>标签,不会被转义。

方法二:禁用ListItem的HTML编码(谨慎使用)

如果你坚持要用HTML字符串的方式实现,且能保证ImageUrl完全可控(无用户输入风险),可以通过反射绕过编码机制:

var tmpRBL = new BulletedList();
var tmpItem = new ListItem();
// 直接赋值HTML字符串
tmpItem.Text = "<img src='" + ImageUrl + "'/>";
// 通过反射关闭内部的HTML编码开关
typeof(ListItem).GetProperty("EnableHtmlEncode", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)?.SetValue(tmpItem, false);
tmpRBL.Items.Add(tmpItem);

⚠️ 注意:这种方式存在XSS风险,仅当你能完全控制HTML内容时使用,更推荐第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:29:04