Repeater html 值始终采用最后一项的值

Repeater html values always taking last item's value

您好,我正在使用 asp 转发器作为列表项的特殊文本框,并使用 div 来提供警报文本框类型(数字或字符串等)这里是 html;

      <asp:Repeater ID="rptProperties" runat="server" DataSourceID="dsProperties" OnItemDataBound="rptProperties_ItemDataBound">
                <ItemTemplate>
                    <li>
                        <div class="form_title"><%# Eval("ad_en")%> </div>

                        <div class="form_content" id="fk_<%# Eval("id")%>">

                            <asp:HiddenField runat="server" ID="hdnPropertyID" Value='<%# Eval("id") %>' />
                            <asp:TextBox runat="server" ID="txtProperty"></asp:TextBox>
                              <div class="alert">
                        <%= labelType %>
                    </div>


                            <div class="select_box" runat="server" id="divSelectBox">
                                <asp:DropDownList runat="server" ID="ddlProperty" CssClass="data_select">
                                    <asp:ListItem>Select</asp:ListItem>
                                </asp:DropDownList>
                            </div>

                        </div>
                    </li>
                </ItemTemplate>
            </asp:Repeater>

这是隐藏代码;

                if (id!=130)
                {
                    txtProperty.Attributes.Add("Class", "data_input");
                    labelType = GetLocalResourceObject("stringType").ToString();                    

                }

                else
                {
                    labelType = GetLocalResourceObject("intType").ToString();

                }

即使代码触发 if 和 else 两者,所有转发器文本框都采用 "intType" 值,即最后一项的值。但是;

   txtProperty.Attributes.Add("Class", "data_input");

line 工作正常,如我所愿。对我来说只有 "labelType" 个变量问题。谢谢

抱歉,这行不通。

<% %> 代码块在 c# 代码 运行 之后编译 运行 次。因此,您更改了 labelType,之后 asp 代码块 运行s 和标签类型是它最后更改的内容。

要使其正常工作,您可以更改实现它的方式,也许将该代码隐藏块写入 asp 块。

<div class="alert">
   <%=   Convert.ToInt32(Eval("id")) != 130 ? GetLocalResourceObject("stringType").ToString() : GetLocalResourceObject("intType").ToString() %>
</div>

并将代码隐藏更改为

if (id!=130)
{
    txtProperty.Attributes.Add("Class", "data_input");
}