J'ai accidentellement découvert une différence entre 2.0 et 1.1 et je l'ai notée pour la rappeler à tout le monde.
Il s’agit de générer du code pour la première page. Nous savons que les contrôles du serveur asp.net seront éventuellement interprétés dans les scripts javascript front-end et les codes HTML. Par exemple, le contrôle « datagrid » sera interprété dans l'étiquette « table » et le contrôle « CheckBox » sera interprété. dans "<input type='checkbox'... …"Étiquette. asp.net2.0 et asp.net1.1 ont tous deux ce mécanisme, nous pouvons donc souvent utiliser ce mécanisme pour écrire des scripts javascript à la réception afin de faire fonctionner les balises html générées après ces interprétations et pour appeler certains événements. Je ne sais pas si vous utilisez souvent cette méthode, mais j’utilise souvent cette méthode et je ne m’en lasse pas.
Un incident accidentel a trouvé un problème. J'ai directement copié certains scripts js sous 1.1 et je les ai utilisés dans des projets sous 2.0. J'ai trouvé des erreurs et des erreurs de script. Ensuite, j'ai étudié attentivement le code frontend généré par asp.net2. , le secret a été découvert. Sous asp.net, une fois le contrôle serveur dans la colonne du modèle de grille de données interprété, l'étiquette générée générera un nouvel ID basé sur l'ID du contrôle serveur d'origine.
Par exemple (sous asp.net1.1), le contrôle CheckBox est utilisé dans la colonne modèle du contrôle 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>
<Colonnes>
<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='Select All'>">
<HeaderStyle HorizontalAlign="Centre" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Centre" CssClass="list_td"></ItemStyle>
<Modèle d'élément>
<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="Nom de la couleur">
<HeaderStyle HorizontalAlign="Centre" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Centre" CssClass="list_td"></ItemStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="COLOR_CODE" HeaderText="Codage HTML couleur">
<HeaderStyle HorizontalAlign="Centre" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Centre" CssClass="list_td"></ItemStyle>
</asp:Colonneliée>
</Colonnes>
</asp:grille de données>
Après avoir expliqué le HTML à la réception, cela devient :
<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">Sélectionner<input type='checkbox' id='' onclick='doSelectAll();'
<td class="list_1" align="Center">Nom de la couleur</td>
<td class="list_1" align="Center">Encodage HTML couleur</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>
</table>
Nous pouvons voir que le contrôle DataGrid est devenu une étiquette de table, l'identifiant reste inchangé et le
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
Cela devient
<input id="myDataGrid__ctl2_CheckBox1" type="checkbox" name="myDataGrid:_ctl2:CheckBox1" />
Le "myDataGrid__ctl2_CheckBox1" ici est automatiquement ajouté par asp.net. Il est généré en combinant l'identifiant du DataGrid où il se trouve, son propre identifiant et la ligne où les données sont liées.
Les résultats ci-dessus ont été générés sous asp.net1.1. L'identifiant généré par 2.0 a changé. L'identifiant n'est pas myDataGrid__ctl2_CheckBox1, mais myDataGrid:_ctl2:CheckBox1, mais l'attribut name reste inchangé. Rendez simplement l'identifiant et le nom cohérents. En fait, cela devrait être comme ça. C'est peut-être l'un des aspects déraisonnables de dotnet1.1.
Une petite découverte, j'espère qu'elle aidera tout le monde.