在 javascript 中的字符串中连接 for 循环变量后 Default.aspx.designer.cs 出错

Error on Default.aspx.designer.cs after concatenating a for loop variable in a string in javascript

我有一个 asp.net 网络表单 Default.aspx。

在 javascript 中我构建了这个函数:

function removeAndAddPermisionsRows(table, accesses) {
    deleteRows(table);

    var accessesLen = accesses.length;
    var row = '<tr>';

    for (var i = 0; i < accessesLen; i++) {
        if (i != 0 && i % 2 == 0) {
            row = row + '</tr><tr>';
        }

        row = row +
            '    <td class="leftMarginSectionItem">' +
            '        <asp:Image ID="PermisionImgSectionItem" runat="server" Width="32px" Height="32px" ImageUrl="~/Images/checkmark32.png" />' +
            '    </td>' +
            '    <td>' +
            '        <div>' +
            '            <h3 id="PermisionSectionItem"><asp:Label runat="server" ID="lblPermission" Text=""></asp:Label></h3>' +
            '            <asp:Label runat="server" ID="lblPermissionId" Text=""></asp:Label>' +
            '        </div>' +
            '        <p id="permisionRect" class="roundedCornersRectangleSectionItemsBackground" />' +
            '    </td>';
    }

    if (accessesLen % 2 == 0) {
        row = row + '</tr>';
    }
    else {
        row = row + '<td></td><td></td></tr>';
    }

    table.find('tbody').append(row);
}

好的,这里没问题,这段代码可以编译。

但我需要将循环中的“i”变量连接到一些字符串,因此如果我在循环中执行以下操作,例如我希望 ID PermisionImgSelectionItem 为 PermisionImgSelectionItem0、PermisionImgSelectionItem1 等等,其余 ID 相同:

        row = row +
            '    <td class="leftMarginSectionItem">' +
            '        <asp:Image ID="PermisionImgSectionItem'+ i +'" runat="server" Width="32px" Height="32px" ImageUrl="~/Images/checkmark32.png" />' +
            '    </td>' +
            '    <td>' +
            '        <div>' +
            '            <h3 id="PermisionSectionItem"><asp:Label runat="server" ID="lblPermission" Text=""></asp:Label></h3>' +
            '            <asp:Label runat="server" ID="lblPermissionId" Text=""></asp:Label>' +
            '        </div>' +
            '        <p id="permisionRect" class="roundedCornersRectangleSectionItemsBackground" />' +
            '    </td>';

当我将 i 变量连接到字符串时,我的代码无法编译,vs2019 说自动生成的 Default.aspx.designer.cs 中存在错误,我不知道,但它也连接了变量“i”到一些控件的名称。

发生了什么事?

问题是由 asp:Label 元素引起的。在字符串和循环变量中连接此元素会导致此错误!用 html 标签替换 asp:Label 即可解决问题。