我正在尝试在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³/min</option>
<option value="2">M³/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³/min"
},
new idAndUnit
{
Id = 2,
Unit = "M³/min"
}
};
drp.DataSource = units;
drp.DataTextField = "Unit";
drp.DataValueField = "Id";
drp.DataBind();
}
}
如果您运行该页面并查看它生成的源html,您会看到以下内容:
<select>
<option value="1">M³/min</option>
<option value="2">M³/s</option>
</select>
<select name="drp" id="drp">
<option value="1">M&#179;/min</option>
<option value="2">M&#179;/min</option>
正如您所看到的DropDownList版本已将M³/ min更改为M&amp;#179; /min。我不知道为什么发生这种变化可能是为了某种方式有所帮助,或者可能是防止xss的安全原因或者类似的东西。是否有可能在此处阻止此行为,以便我可以获得我之后的输出?
答案 0 :(得分:1)
刚想通了
使用HttpUtility.HtmlDecode(“M³/ min”)修复它。