为什么我的asp:Literal控件在asp:ListView ItemTemplate中不起作用

时间:2013-08-02 09:10:58

标签: asp.net .net webforms

为什么我的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元素标签。我不知道为什么。

由于

1 个答案:

答案 0 :(得分:1)

在代码块中使用冒号字符(:)时,它会自动对输出进行HTML编码。 (有关详细信息,请参阅我的回答here

要解决此问题,只需从代码中删除冒号,所以它看起来像这样:

<asp:ListView ID="lv" runat="server" ItemType="WebApplication1.ItemClass">
    <ItemTemplate>
        <asp:Literal runat="server" Text='<%# Item.HtmlText %>' />
    </ItemTemplate>
</asp:ListView>