ASP.NET Repeater绑定List <string>

jos*_*989 102 asp.net data-binding repeater

我绑定List<string>到Repeater控件.现在我想使用的Eval功能中显示的内容ItemTemplate类似

<%# Eval("NAME") %>.  
Run Code Online (Sandbox Code Playgroud)

但我不确定我应该使用什么而不是NAME.

Vad*_*dim 212

只是用 <%# Container.DataItem.ToString() %>

如果您担心空值,可能需要重构(.NET 6+)

<asp:Repeater ID="repeater" runat="server">
    <ItemTemplate>
        <%# Container.DataItem?.ToString() ?? string.Empty%>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

请注意,如果使用的是少于.NET 6,则无法使用空条件运算符 Container.DataItem?.ToString()

  • 请记住,`Container.DataItem`是一种对象类型. (10认同)

小智 25

将ItemType设置为System.string

<asp:Repeater ItemType="System.string" runat="server">
    <ItemTemplate>
        <%# Item %>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,ItemType属性是在.NET Framework 4.5中引入的. (6认同)

Rob*_*oBr 10

rptSample.DataSource = from c in lstSample select new { NAME = c };
Run Code Online (Sandbox Code Playgroud)

在你转发的中继器

<%# Eval("NAME") %>
Run Code Online (Sandbox Code Playgroud)

  • 一些示例使用<%#DataBinder.Eval(Container.DataItem,"NAME")%>而不是简单地使用Eval.有什么不同? (2认同)

Nat*_*son 9

这应该工作得很好:

<ItemTemplate>
   <%=this.GetDataItem().ToString() %>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)