为什么我的asp:Literal控件在asp:ListView ItemTemplate中不起作用? ASP.NET 4.5 WebForms
ASPX代码:
<asp:ListView ID="lv" runat="server" ItemType="WebApplication1.ItemClass">
<ItemTemplate>
<asp:Literal runat="server" Text='<%#: Item.HtmlText %>' />
</ItemTemplate>
</asp:ListView>
ASPX代码背后:
this.lv.DataSource = new ItemClass[] {
new ItemClass() { HtmlText = "<p>Hello 01<br/>blablabla</p>"},
new ItemClass() { HtmlText = "<p>Hello 02<br/>blablabla</p>"},
new ItemClass() { HtmlText = "<p>Hello 03<br/>blablabla</p>"}
};
this.lv.DataBind();
我的对象类:
public class ItemClass
{
public string HtmlText { get; set; }
}
我页面上的结果:
<p>Hello 01<br/>blablabla</p> <p>Hello 02<br/>blablabla</p> <p>Hello 03<br/>blablabla</p>
我可以看到html元素标签。我不知道为什么。
由于
答案 0 :(得分:1)
在代码块中使用冒号字符(:)时,它会自动对输出进行HTML编码。 (有关详细信息,请参阅我的回答here)
要解决此问题,只需从代码中删除冒号,所以它看起来像这样:
<asp:ListView ID="lv" runat="server" ItemType="WebApplication1.ItemClass">
<ItemTemplate>
<asp:Literal runat="server" Text='<%# Item.HtmlText %>' />
</ItemTemplate>
</asp:ListView>