-1

我有以下代码:

                <%for (int index = 1; index < 7; ++index) {%>
                    <tr>
                        <td>
                            <div class="indicacao_gdp">
                                <asp:TextBox ReadOnly="true" ID="inp_txt_indicacao_<%= index %>" CssClass="inp_txt_indicacao" runat="server" MaxLength="12"></asp:TextBox>
                            </div>
                        </td>
                        <td>
                            <div class="codigo_debito_credito_gdp">
                                <asp:TextBox ReadOnly="true" ID="inp_txt_codigo_debito_credito_<%= index %>" CssClass="inp_txt_codigo_debito_credito" runat="server" MaxLength="2"></asp:TextBox>
                            </div>
                        </td>
                        <td>
                            <div class="descricao_debito_credito_gdp">
                                <asp:TextBox ReadOnly="true" ID="inp_txt_descricao_debito_credito_<%= index %>" CssClass="inp_txt_descricao_debito_credito" runat="server" MaxLength="2"></asp:TextBox>
                            </div>
                        </td>
                        <td>
                            <div class="valor_debito_credito_gdp">
                                <asp:TextBox ReadOnly="true" ID="inp_txt_valor_debito_credito_inteiro_<%= index %>" CssClass="inp_txt_valor_inteiro" runat="server" MaxLength="8"></asp:TextBox>
                                ,
                                <asp:TextBox ReadOnly="true" ID="inp_txt_valor_debito_credito_decimal_<%= index %>" CssClass="inp_txt_valor_decimal" runat="server" MaxLength="2"></asp:TextBox>
                            </div>
                        </td>
                    </tr>
                <%}%>

但是,代码不起作用...

Parser Error Message: 'inp_txt_indicacao_<%= index %>' is not a valid identifier.

我怎么解决的?

4

3 回答 3

2

使用该控件并从代码隐藏PlaceHolder动态添加控件。TextBox在代码隐藏中,您可以轻松设置 ID 和您喜欢的任何其他属性。

请参阅MSDN:以编程方式将控件添加到 ASP.NET 网页

于 2013-08-15T18:55:04.993 回答
1

为什么需要这样做?如果您使用 runat="server" 控件将永远不会有相同的 ID。如果将这些文本框包装在一个带有类的容器中,则可以通过 jQuery 从这些元素中轻松获取数据。

于 2013-08-15T18:57:49.153 回答
0

当您使用 runat="server" 时,您正在创建 .net 对象而不是实际的 html。

您有两个选择,您可以使用中继器并将 id 设置为 ID="inp_txt_indicacao"(.net 将负责使其唯一)。

或者不是让 <asp:TextBox 你把常规

<input type="textbox" id="inp_txt_indicacao_<%= index %>" />

中继器

网上有很多很好的教程,但这里有一个快速的理解。

要使用中继器,您需要将数据放入某种列表中。

Public Class TestClass

    Public Sub New(ByVal v1 As String, ByVal v2 As String)

        Value1 = v1
        Value2 = v2

    End Sub

    Public Property Value1() As String
    Public Property Value2() As String

End Class

    Dim tc As New List(Of TestClass)

    tc.Add(New TestClass("aa", "bb"))
    tc.Add(New TestClass("cc", "dd"))
    tc.Add(New TestClass("ee", "ff"))

您只需要将数据绑定到中继器

    rpData.DataSource = tc
    rpData.DataBind()


    <asp:Repeater ID="rpData" runat="server">
    <HeaderTemplate>
        <table>
        <tr>
            <th>Header 1</th>
            <th>Header 2</th>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td><asp:TextBox ID="txtValue1" Text='<%# Bind("Value1") %>' runat="server" /></td>
            <td><asp:TextBox ID="txtValue2" Text='<%# Bind("Value2") %>' runat="server" /></td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
    </asp:Repeater>
于 2013-08-15T19:42:40.540 回答