代码之家  ›  专栏  ›  技术社区  ›  Sanjeewa severino

<a>标记动态文本生成问题

  •  0
  • Sanjeewa severino  · 技术社区  · 9 年前

    我有一个代码,我想通过使用foreach类类型属性值动态生成文本

    但每次运行它时,都会生成编译时错误

    <ul class="nav nav-pills nav-stacked">
                            <% 
                                List<CodeCamper.EntityLayer.Transaction.SessionVO> y = new List<CodeCamper.EntityLayer.Transaction.SessionVO>();
    
                                CodeCamper.EntityLayer.Transaction.SessionVO x = new CodeCamper.EntityLayer.Transaction.SessionVO();
                                x.SessionTimeSlot = "Day 01";
                               y.Add(x);
    
                               x = new CodeCamper.EntityLayer.Transaction.SessionVO();
                               x.SessionTimeSlot = "Day 02";
                               y.Add(x);
    
                               x = new CodeCamper.EntityLayer.Transaction.SessionVO();
                               x.SessionTimeSlot = "Day 03";
                               y.Add(x);
    
    
                               foreach (CodeCamper.EntityLayer.Transaction.SessionVO s in y)
                               {
                                    %>
                                    <li class="active"><a href="#" runat="server" onserverclick="sample_Click"><%= s.SessionTimeSlot %></a></li>
                                    <%
                               }                            
                                %>
    
                           <%-- <li class="active"><a href="#">Home</a></li>
                             <li class="active"><a href="#">sfsfs</a></li>--%>
                        </ul>
    

    编译时错误为 编译器错误消息:CS0103:名称“item”在当前上下文中不存在

    希望更正此代码

    enter image description here

    1 回复  |  直到 9 年前
        1
  •  1
  •   DerpyNerd    9 年前

    我相信 <%= s.SessionTimeSlot %> 是你的问题。 您应该使用 Repeater 为此目的。

    尝试如下操作:

    <asp:Repeater ID="SessionVORepeater" runat="server">
        <ItemTemplate>
            <li class="active"><a href="#" runat="server" onserverclick="sample_Click"><%# DataBinder.Eval(Container.DataItem, "SessionTimeSlot") %></a></li>
        </ItemTemplate>
    </asp:Repeater>
    

    在代码隐藏中(例如Page_Load):

                            List<CodeCamper.EntityLayer.Transaction.SessionVO> y = new List<CodeCamper.EntityLayer.Transaction.SessionVO>();
    
                            CodeCamper.EntityLayer.Transaction.SessionVO x = new CodeCamper.EntityLayer.Transaction.SessionVO();
                            x.SessionTimeSlot = "Day 01";
                           y.Add(x);
    
                           x = new CodeCamper.EntityLayer.Transaction.SessionVO();
                           x.SessionTimeSlot = "Day 02";
                           y.Add(x);
    
                           x = new CodeCamper.EntityLayer.Transaction.SessionVO();
                           x.SessionTimeSlot = "Day 03";
                           y.Add(x);
    
                           SessionVORepeater.DataSource = y;
                           SessionVORepeater.DataBind();
    

    希望这有帮助