[asp.net] ASP.NET 리피터 바인딩 목록 <문자열>

나는 List<string>Repeater 컨트롤에 바인딩하고 있습니다. 이제이 Eval기능 을 사용 하여 내용을 다음 ItemTemplate과 같이 표시하고 싶습니다.

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

하지만 NAME 대신 무엇을 사용해야하는지 잘 모르겠습니다.



답변

그냥 사용 <%# Container.DataItem.ToString() %>

null 값이 걱정되는 경우이를 리팩토링하는 것이 좋습니다 (.NET 6 이상).

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

.NET 6 미만을 사용하는 경우 null 조건 연산자 Container.DataItem? .ToString ()을 사용할 수 없습니다.


답변

ItemType을 System.string으로 설정합니다.

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


답변

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

당신이 넣은 중계기에

<%# Eval("NAME") %>


답변

이것은 잘 작동합니다.

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


답변

@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>


답변

여기서 databind 구문을 사용해야합니다. 그렇지 않으면 작동하지 않습니다.

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


답변

내부 항목 템플릿

     <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()%>