Случайно обнаружил разницу между 2.0 и 1.1 и записал, чтобы всем напомнить.
Речь идет о генерации кода для главной страницы. Мы знаем, что серверные элементы управления asp.net в конечном итоге будут интерпретироваться во внешних сценариях JavaScript и HTML-кодах. Например, элемент управления «datagrid» будет интерпретироваться в метку «таблица», а элемент управления «CheckBox» будет интерпретироваться. в "<input type='checkbox'... …"Label. И asp.net2.0, и asp.net1.1 имеют этот механизм, поэтому мы часто можем использовать этот механизм для написания некоторых сценариев Javascript на стойке регистрации, чтобы управлять тегами html, созданными после этих интерпретаций, и вызывать некоторые события. Не знаю, часто ли вы пользуетесь этим методом, но я часто этим методом пользуюсь и никогда не устаю от него.
Случайный инцидент обнаружил проблему. Я напрямую скопировал некоторые js-скрипты под 1.1 и использовал их в проектах под 2.0. Я не смог разобраться. Затем я внимательно изучил код интерфейса, сгенерированный asp.net2. , секрет был раскрыт. В asp.net после интерпретации серверного элемента управления в столбце шаблона datagrid сгенерированная метка будет генерировать новый идентификатор на основе идентификатора исходного серверного элемента управления.
Например (в asp.net1.1) элемент управления CheckBox используется в столбце шаблона элемента управления DataGrid:
<asp:datagrid id="myDataGrid" runat="server" AutoGenerateColumns="False" Height="100%" Width="100%"
EnableViewState="false">
<AlternatingItemStyle CssClass="list_bai"></AlternatingItemStyle>
<ItemStyle CssClass="list_lan"></ItemStyle>
<HeaderStyle CssClass="list_1"></HeaderStyle>
<Столбцы>
<asp:BoundColumn DataField="COLOR_ID" HeaderStyle-CssClass="disTd" ItemStyle-CssClass="disTd"></asp:BoundColumn>
<asp:TemplateColumn HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderText="Select<input type='checkbox' id='' onclick='doSelectAll();' title='Выбрать все'>">
<HeaderStyle HorizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" CssClass="list_td"></ItemStyle>
<Шаблон элемента>
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn DataNavigateUrlField="COLOR_ID" DataNavigateUrlFormatString="InfoCOLOR.aspx?id={0}&flag=0"
DataTextField="COLOR_NAME" HeaderText="Название цвета">
<HeaderStyle HorizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" CssClass="list_td"></ItemStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="COLOR_CODE" HeaderText="Цветовое HTML-кодирование">
<HeaderStyle HorizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" CssClass="list_td"></ItemStyle>
</asp:BoundColumn>
</Колонки>
</asp:datagrid>
После объяснения HTML на стойке регистрации получается:
<table cellpacing="0" Rules="all" border="1" id="myDataGrid" style="height:100%;width:100%;border-collapse:collapse;">
<tr class="list_1">
<td class="disTd"> </td>
<td class="list_1" align="Center">Выбрать<input type='checkbox' id='' onclick='doSelectAll();' title='Выбрать все'></td>
<td class="list_1" align="Center">Название цвета</td>
<td class="list_1" align="Center">Цветовая кодировка HTML</td>
</tr>
<tr class="list_lan">
<td class="disTd">16</td>
<td class="list_td" align="Center"> <input id="myDataGrid__ctl2_CheckBox1" type="checkbox" name="myDataGrid:_ctl2:CheckBox1" /></td>
<td class="list_td" align="Center"><a href="InfoCOLOR.aspx?id=16&flag=0">213`</a></td>
<td class="list_td" align="Center">123123</td>
</tr>
</таблица>
Мы видим, что элемент управления DataGrid стал меткой таблицы, идентификатор остался неизменным, а исходный
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
Он становится
<input id="myDataGrid__ctl2_CheckBox1" type="checkbox" name="myDataGrid:_ctl2:CheckBox1" />
Здесь asp.net автоматически добавляет «myDataGrid__ctl2_CheckBox1». Он генерируется путем объединения идентификатора DataGrid, в котором он расположен, его собственного идентификатора и строки, к которой привязаны данные.
Приведенные выше результаты были созданы в asp.net1.1. Идентификатор, сгенерированный версией 2.0, изменился. Идентификатор не myDataGrid__ctl2_CheckBox1, а myDataGrid:_ctl2:CheckBox1, но атрибут name остается неизменным. Вы можете догадаться, с какой целью Microsoft это сделала. Просто сделайте id и имя согласованными. На самом деле так и должно быть. Возможно, это один из необоснованных аспектов dotnet1.1.
Небольшое открытие, надеюсь, оно поможет всем.