Saya tidak sengaja menemukan perbedaan antara 2.0 dan 1.1, dan menuliskannya untuk mengingatkan semua orang.
Ini tentang menghasilkan kode untuk halaman depan. Kita tahu bahwa kontrol server asp.net pada akhirnya akan diinterpretasikan ke dalam skrip javascript front-end dan kode html. Misalnya, kontrol "datagrid" akan diinterpretasikan ke dalam label "tabel", dan kontrol "Kotak Centang" akan diinterpretasikan. ke dalam "<input type='checkbox'... … "Label. Baik asp.net2.0 dan asp.net1.1 memiliki mekanisme ini, sehingga kita sering dapat menggunakan mekanisme ini untuk menulis beberapa skrip javascript di meja depan untuk mengoperasikan tag html yang dihasilkan setelah interpretasi ini, dan untuk memanggil beberapa peristiwa. Saya tidak tahu apakah Anda sering menggunakan cara ini, tapi saya sering menggunakan cara ini dan tidak pernah bosan.
Sebuah kejadian yang tidak disengaja menemukan masalah. Saya langsung menyalin beberapa skrip js di bawah 1.1 dan menggunakannya dalam proyek di bawah 2.0. Saya menemukan kesalahan dan kesalahan skrip. Saya tidak dapat menemukannya. Kemudian saya mempelajari asp.net2 dengan cermat , rahasianya terbongkar. Di bawah asp.net, setelah kontrol server di kolom templat datagrid diinterpretasikan, label yang dihasilkan akan menghasilkan ID baru berdasarkan ID kontrol server asli.
Misalnya (di bawah asp.net1.1), kontrol CheckBox digunakan di kolom template kontrol DataGrid:
<asp:datagrid id="myDataGrid" runat="server" AutoGenerateColumns="False" Tinggi="100%" Lebar="100%"
AktifkanViewState="false">
<AlternatingItemStyle CssClass="list_bai"></AlternatingItemStyle>
<ItemStyle CssClass="list_lan"></ItemStyle>
<HeaderStyle CssClass="list_1"></HeaderStyle>
<Kolom>
<asp:BoundColumn DataField="COLOR_ID" HeaderStyle-CssClass="disTd" ItemStyle-CssClass="disTd"></asp:BoundColumn>
<asp:TemplateColumn HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderText="Pilih<input type='checkbox' id='' onclick='doSelectAll();' title='Pilih Semua'>">
<HeaderStyle HorizontalAlign="Tengah" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Tengah" CssClass="list_td"></ItemStyle>
<Templat Barang>
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
</Templat Barang>
</asp:Kolom Templat>
<asp:HyperLinkColumn DataNavigateUrlField="COLOR_ID" DataNavigateUrlFormatString="InfoCOLOR.aspx?id={0}&flag=0"
DataTextField="COLOR_NAME" HeaderText="Nama warna">
<HeaderStyle HorizontalAlign="Tengah" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Tengah" CssClass="list_td"></ItemStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="COLOR_CODE" HeaderText="Pengkodean HTML Berwarna">
<HeaderStyle HorizontalAlign="Tengah" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Tengah" CssClass="list_td"></ItemStyle>
</asp:Kolom Terikat>
</Kolom>
</asp:datagrid>
Setelah dijelaskan html di front desk menjadi:
<tabel Cellspacing="0" Rules="all" border="1" id="myDataGrid" style="height:100%;width:100%;border-collapse:collapse;">
<tr kelas="daftar_1">
<td class="disTd"> </td>
<td class="list_1" align="Center">Pilih<input type='checkbox' id='' onclick='doSelectAll();' title='Pilih Semua'></td>
<td class="list_1" align="Center">Nama warna</td>
<td class="list_1" align="Center">Enkode HTML berwarna</td>
</tr>
<tr kelas="daftar_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>
</tabel>
Kita dapat melihat bahwa kontrol DataGrid telah menjadi label Tabel, id tetap tidak berubah, dan
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
asli
Ini menjadi
<input id="myDataGrid__ctl2_CheckBox1" type="checkbox" name="myDataGrid:_ctl2:CheckBox1" />
"myDataGrid__ctl2_CheckBox1" di sini secara otomatis ditambahkan oleh asp.net. Ini dihasilkan dengan menggabungkan id DataGrid tempatnya berada, idnya sendiri, dan baris tempat data terikat.
Hasil di atas dihasilkan di bawah asp.net1.1. Id yang dihasilkan oleh 2.0 telah berubah. Id tersebut bukan myDataGrid__ctl2_CheckBox1, tetapi myDataGrid:_ctl2:CheckBox1, tetapi atribut name tetap tidak berubah. Konsisten saja id dan namanya. Sebenarnya harusnya seperti ini. Mungkin ini salah satu aspek yang tidak masuk akal dari dotnet1.1.
Sebuah penemuan kecil, saya harap ini membantu semua orang.