在 webforms DropDownList 控件中呈现 html 个实体

Rendering html entities in webforms DropDownList control

我正在尝试在 DropDownList 控件中使用 html 个实体。我使用实体的原因是因为我想显示带有上标的单位,例如 m²/s 或 kg/m³。 sup 不是一个选项,因为它在 select 选项标签内不起作用。我创建了一个小示例来说明我的问题。这是我的 aspx 页面:

<!DOCTYPE html>
<html lang="en">
    <head runat="server">
    <meta charset="utf-8" />
    <title></title>
</head>

<body>
    <form id="form1" runat="server">
        <div>
            <select>           
                <option value="1">M&#179;/min</option>
                <option value="2">M&#179;/s</option>
            </select>

            <asp:DropDownList ID="drp" runat="server"></asp:DropDownList>


        </div>
    </form>
</body>
</html>

下面是我的代码:

public partial class MyPage: System.Web.UI.Page
{
    private class idAndUnit
    {
        public int Id { get; set; }
        public string Unit { get; set; }
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        var units = new List<idAndUnit>()
        {
            new idAndUnit
            {
                Id = 1,
                Unit = "M&#179;/min"
            },
            new idAndUnit
            {
                Id = 2,
                Unit = "M&#179;/min"
            }
        };


        drp.DataSource = units;
        drp.DataTextField = "Unit";
        drp.DataValueField = "Id";
        drp.DataBind();


    }
}

如果您 运行 页面并查看来源 html 它生成您会看到以下内容:

<select>           
    <option value="1">M&#179;/min</option>
    <option value="2">M&#179;/s</option>
 </select>

 <select name="drp" id="drp">
    <option value="1">M&amp;#179;/min</option>
    <option value="2">M&amp;#179;/min</option>

如您所见,DropDownList 版本已将 M³/min 更改为 M³/min.I我不确定为什么会发生此更改,大概是在某种程度上有帮助,或者可能是出于安全原因防止 xss 或类似的东西。是否可以在这里防止这种行为,以便我可以获得我想要的输出?

刚弄明白

使用 HttpUtility.HtmlDecode("M³/min") 修复它。