我很想知道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内联。
答案 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>