【问题标题】:ASP.NET Repeater bind List<string>ASP.NET 中继器绑定列表<字符串>
【发布时间】:2011-06-28 01:14:15
【问题描述】:

我将List&lt;string&gt; 绑定到Repeater 控件。现在我想使用Eval 函数 显示ItemTemplate中的内容,比如

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

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

【问题讨论】:

    标签: asp.net data-binding repeater


    【解决方案1】:

    只需使用&lt;%# Container.DataItem.ToString() %&gt;

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

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

    请注意,如果您使用低于 .NET 6 的版本,则不能使用 null-conditional operatorContainer.DataItem?.ToString()

    【讨论】:

      【解决方案2】:

      将 ItemType 设置为 System.String

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

      【讨论】:

      • 请注意,ItemType 属性是在 .NET Framework 4.5 中引入的。
      【解决方案3】:
      rptSample.DataSource = from c in lstSample select new { NAME = c };
      

      在你放置的中继器中

      <%# Eval("NAME") %>
      

      【讨论】:

      • 一些示例使用 而不是简单地使用 Eval。有什么区别?
      【解决方案4】:

      这应该可以正常工作:

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

      【讨论】:

        【解决方案5】:

        一个基于@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>
        

        【讨论】:

          【解决方案6】:

          你必须在这里使用数据绑定语法,否则它将不起作用。

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

          【讨论】:

            【解决方案7】:

            内部项目模板

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

            【讨论】:

              猜你喜欢
              • 2017-11-03
              • 2014-11-06
              • 1970-01-01
              • 2021-12-05
              • 1970-01-01
              • 2014-05-25
              • 1970-01-01
              • 2023-04-01
              • 1970-01-01
              相关资源
              最近更新 更多