在ASP.NET中动态生成HTML

时间:2010-12-11 00:10:00

标签: c# asp.net

我很想知道asp.net是否允许我们在.aspx源页面上动态生成HTML内联(而不是代码隐藏)。

为了测试,我创建了以下简单的.aspx页面......

在我的asp.net代码隐藏中,我有以下内容:

    protected List<string> myList = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (myList == null)
            myList = new List<string>();

        myList.Add("One String");
        myList.Add("Two String");
        myList.Add("Three String");
        myList.Add("Four String");

        this.Repeater1.DataSource = myList;
        this.Repeater1.DataBind();
    }

在相应的源页面上我有:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <ol>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <li>
                    <%# DataBinder.GetDataItem(myList) %>
                </li>
            </ItemTemplate>
        </asp:Repeater>
    </ol>
</body>
</html>

结果.aspx页面是:

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <ol>

                <li></li>

                <li></li>

                <li></li>

                <li></li>

    </ol>
</body>
</html>

请注意,Repeater控件确实创建了四个列表项。但是,myList列表的内容(一个字符串,两个字符串等)并没有出现。

我需要做什么来评估myList列表并在列表项标签中获取它的值?顺便说一下,我并不关心如何专门使用Repeater控件,所以如果有一个不包含Repeater控件的问题的解决方案,那我很好。

注意:我知道我可以将“myList”通用列表绑定到asp:BulletedList并获得相同的结果。我更感兴趣的是动态创建源内页的HTML内联。

1 个答案:

答案 0 :(得分:6)

使用此代码:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
         <li>
            <%# Container.DataItem %>
         </li>
    </ItemTemplate>
</asp:Repeater>

如果需要将source与具有属性的对象列表绑定,请尝试使用:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
         <li>
            <%# Eval("PropertyName") %>
            or
            <%# Eval("PropertyName","DataFormat") %>
         </li>
    </ItemTemplate>
</asp:Repeater>