在 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³/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³/min.I我不确定为什么会发生此更改,大概是在某种程度上有帮助,或者可能是出于安全原因防止 xss 或类似的东西。是否可以在这里防止这种行为,以便我可以获得我想要的输出?
刚弄明白
使用 HttpUtility.HtmlDecode("M³/min") 修复它。
我正在尝试在 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³/min.I我不确定为什么会发生此更改,大概是在某种程度上有帮助,或者可能是出于安全原因防止 xss 或类似的东西。是否可以在这里防止这种行为,以便我可以获得我想要的输出?
刚弄明白
使用 HttpUtility.HtmlDecode("M³/min") 修复它。