在webforms DropDownList控件中呈现html实体

时间:2017-12-13 11:01:15

标签: drop-down-menu webforms html-select html-entities

我正在尝试在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&amp;#179; /min。我不知道为什么发生这种变化可能是为了某种方式有所帮助,或者可能是防止xss的安全原因或者类似的东西。是否有可能在此处阻止此行为,以便我可以获得我之后的输出?

1 个答案:

答案 0 :(得分:1)

刚想通了

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