如何在Repeater ItemTemplate中使用它?
foreach(string tag in Eval("etiketler"))
{
Response.Write("<a href='#'>"+tag+"</a");
}
答案 0 :(得分:1)
<%#
未使用foreach
,if
或其他语言关键字。它主要用于数据绑定。
但你可以:
使用转发器的_ItemDataBound事件在代码隐藏中执行此操作(非常适用于复杂的处理/格式化)。 请参阅http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.repeater.itemdatabound%28v=vs.110%29.aspx
调用页面的方法,该方法接受DataItem的参数并创建所需的数据。例如,请参阅How do you pass a Container.DataItem as a parameter?
希望这有帮助
答案 1 :(得分:1)
没有办法以这种格式进行。你应该将 Dataitem 发送到一个静态方法,然后你应该返回包含你的标记的字符串..
public static string GetMarkup(object dataItem)
{
var tags = DataBinder.Eval(dataItem, "etiketler"); // depend on etiketler type
StringBuilder sb = new StringBuilder();
foreach(string tag in tags)
{
sb.Append("<a href='#'>"+tag+"</a");
}
return sb.ToString();
}
使用这样的方法:
<%# GetMarkup(Container.DataItem) %>
答案 2 :(得分:0)
您还可以在ASP.NET中使用嵌套转发器
<asp:Repeater runat="server" ID="rpt1">
<ItemTemplate>
<asp:Repeater runat="server" ID ="rpt2" DataSource='<%# Eval("etiketler") %>'>
<ItemTemplate>
<%# Eval("tag") %>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>