Danh sách liên kết bộ lặp ASP.NET <chuỗi>


102

Tôi đang ràng buộc a List<string>với điều khiển Bộ lặp. Bây giờ tôi muốn sử dụng Evalchức năng để hiển thị nội dung ItemTemplatenhư

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

Nhưng tôi không chắc mình nên sử dụng gì thay vì NAME.

Câu trả lời:


212

Chỉ dùng <%# Container.DataItem.ToString() %>

Nếu bạn lo lắng về giá trị null, bạn có thể muốn cấu trúc lại thành này (.NET 6+)

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

Lưu ý nếu bạn đang sử dụng ít hơn .NET 6, bạn không thể sử dụng toán tử điều kiện rỗng Container.DataItem? .ToString ()


25

Đặt ItemType thành System.string

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

6
Lưu ý rằng thuộc tính ItemType được giới thiệu trong .NET Framework 4.5.
— Jonathan van de Veen

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

trong bộ lặp bạn đặt

<%# Eval("NAME") %>

2
Một số ví dụ sử dụng <% # DataBinder.Eval (Container.DataItem, "NAME")%> thay vì chỉ sử dụng Eval. Có gì khác biệt?
— Matthew Lock

9

Điều này sẽ hoạt động tốt:

<ItemTemplate>
   <%=this.GetDataItem().ToString() %>
</ItemTemplate>

3

Một ví dụ đầy đủ hơn dựa trên LINQ do @RobertoBr cung cấp:

Trong mã phía sau:

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

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

Tại trang:

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

3

bạn phải sử dụng cú pháp databind ở đây nếu không nó sẽ không hoạt động.

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

0

Mẫu mặt hàng bên trong

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

hoặc Chỉ cần Thêm vào bên trong Mẫu mặt hàng

<%# Eval("YourEntityName").ToString() ==""? "NA" : Eval("YourEntityName").ToString()%>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.