لقد اكتشفت بالصدفة فرقًا بين 2.0 و1.1، وكتبته لتذكير الجميع.
يتعلق الأمر بإنشاء رمز للصفحة الأولى. نحن نعلم أن عناصر تحكم خادم asp.net سيتم تفسيرها في النهاية إلى نصوص جافا سكريبت الأمامية وأكواد html، على سبيل المثال، سيتم تفسير عنصر التحكم "datagrid" إلى علامة "الجدول"، وسيتم تفسير عنصر التحكم "CheckBox". في "<input type='checkbox'... ..."التسمية. يتمتع كل من asp.net2.0 وasp.net1.1 بهذه الآلية، لذلك يمكننا غالبًا استخدام هذه الآلية لكتابة بعض نصوص جافا سكريبت في مكتب الاستقبال لتشغيل علامات html التي تم إنشاؤها بعد هذه التفسيرات، ولاستدعاء بعض الأحداث. لا أعلم إذا كنت تستخدم هذه الطريقة كثيرًا، لكني كثيرًا ما أستخدم هذه الطريقة ولا أتعب منها أبدًا.
وجدت حادثة مشكلة. لقد قمت بنسخ بعض البرامج النصية لـ js مباشرةً واستخدمتها في المشاريع التي تعمل بالإصدار 2.0. ولم أتمكن من اكتشافها، ثم قمت بدراسة كود الواجهة الأمامية الذي تم إنشاؤه باستخدام asp.net2 ، تم اكتشاف السر. ضمن asp.net، بعد تفسير عنصر تحكم الخادم في عمود قالب datagrid، ستقوم التسمية التي تم إنشاؤها بإنشاء معرف جديد بناءً على معرف عنصر تحكم الخادم الأصلي.
على سبيل المثال (ضمن asp.net1.1)، يتم استخدام عنصر التحكم CheckBox في عمود القالب الخاص بعنصر التحكم DataGrid:
<asp:datagrid id = "myDataGrid" runat = "الخادم" AutoGenerateColumns = "False" الارتفاع = "100٪" العرض = "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='Select All'>">
<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 في مكتب الاستقبال، يصبح:
<جدول تباعد الخلايا = "0" قواعد = "جميع" الحدود = "1" معرف = "myDataGrid" نمط = "الارتفاع: 100٪؛ العرض: 100٪؛ الحدود - طي: طي؛">
<tr class="list_1">
<td class="disTd"> </td>
<td class="list_1" align="Center">Select<input type='checkbox' id='' onclick='doSelectAll();' title='Select All'></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" />
تتم إضافة "myDataGrid__ctl2_CheckBox1" هنا تلقائيًا بواسطة asp.net ويتم إنشاؤه من خلال الجمع بين معرف DataGrid حيث يوجد والمعرف الخاص به والصف الذي ترتبط به البيانات.
تم إنشاء النتائج المذكورة أعلاه ضمن asp.net1.1. لقد تغير المعرف الذي تم إنشاؤه بواسطة 2.0. المعرف ليس myDataGrid__ctl2_CheckBox1، ولكن myDataGrid:_ctl2:CheckBox1، لكن سمة الاسم تظل دون تغيير. فقط اجعل المعرف والاسم متسقين في الواقع، ربما يكون هذا أحد الجوانب غير المعقولة لـ dotnet1.1.
اكتشاف صغير أتمنى أن يفيد الجميع.