ASP.NET中继器绑定列表<string>


102

List<string>将a 绑定到Repeater控件。现在我想使用该Eval功能以ItemTemplate类似的方式显示内容

<%# Eval("NAME") %>.  

但是我不确定应该使用什么来代替NAME。

Answers:


212

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

如果您担心null值,则可能要重构为此(.NET 6+)

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

请注意,如果使用的版本少于.NET 6,则不能使用空条件运算符 Container.DataItem?.ToString()


25

将ItemType设置为System.string

<asp:Repeater ItemType="System.string" runat="server">
    <ItemTemplate>
        <%# Item %>
    </ItemTemplate>
</asp:Repeater>

6
请注意,.NET Framework 4.5中引入了ItemType属性。
Jonathan van de Veen 2014年

10
rptSample.DataSource = from c in lstSample select new { NAME = c };

在你放的中继器中

<%# Eval("NAME") %>

2
一些示例使用<%#DataBinder.Eval(Container.DataItem,“ NAME”)%>代替简单地使用Eval。有什么不同?
Matthew Lock


3

基于@RobertoBr提供的LINQ的更完整示例:

在后面的代码中:

List<string> notes = new List<string>();
notes.Add("Value1")
notes.Add("Value2")

repeaterControl1.DataSource = from c in notes select new {NAME = c};
repeaterControl1.DataBind();

在页面上:

   <asp:Repeater ID="repeaterControl1" runat="server" >
    <ItemTemplate>
        <li><%# Eval("NAME")  %></li>
    </ItemTemplate>
    </asp:Repeater>

3

您必须在此处使用databind语法,否则它将不起作用。

<%# this.GetDataItem().ToString() %>

0

内部项目模板

     <ItemTemplate>
 <asp:Label ID="lblName"  runat="server" Text='<%# Eval("YourEntityName").ToString() ==""? "NA" : Eval("YourEntityName").ToString()%>'></asp:Label>
    <ItemTemplate>

或仅在项目模板内添加

<%# Eval("YourEntityName").ToString() ==""? "NA" : Eval("YourEntityName").ToString()%>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.