يسمح ASP.NET للمستخدمين بإنشاء عناصر التحكم. يتم تصنيف عناصر التحكم المعرفة من قبل المستخدم على النحو التالي:
التحكم في المستخدم
الضوابط المخصصة
تعمل عناصر تحكم المستخدم مثل صفحات ASP.NET المصغرة أو نماذج الويب التي يمكن استخدامها بواسطة العديد من الصفحات الأخرى. هذه مشتقة من فئة System.Web.UI.UserControl. وتتميز عناصر التحكم هذه بالخصائص التالية:
لديهم ملحق .ascx.
قد لا تحتوي على أي أو علامات.
لديهم توجيه التحكم بدلاً من توجيه الصفحة.
لفهم هذا المفهوم، دعونا ننشئ عنصر تحكم بسيط للمستخدم والذي سيكون بمثابة تذييل صفحة الويب. لإنشاء عناصر تحكم المستخدم واستخدامها، اتبع الخطوات التالية:
إنشاء تطبيق ويب جديد.
انقر بزر الماوس الأيمن فوق مجلد المشروع في Solution Explorer وحدد ADD New Item.
حدد عنصر تحكم مستخدم الويب من مربع الحوار "إضافة عنصر جديد" وقم بتسميته footer.ascx. في البداية، يحتوي footer.ascx على توجيه التحكم فقط.
<%@ لغة التحكم = "C#" AutoEventWireup = "true" CodeBehind = "footer.ascx.cs" Inherits = "customcontroldemo.footer" %>
أضف الكود التالي إلى الملف:
<table> <tr> <td align="center"> حقوق الطبع والنشر ©2010 TutorialPoints Ltd.</td> </tr> <tr> <td align="center"> الموقع: حيدر أباد، AP </td> </ tr></table>
لإضافة عنصر تحكم مستخدم إلى صفحة الويب الخاصة بك، يجب عليك إضافة توجيه تسجيل ومثيل لعنصر تحكم مستخدم الصفحة. يوضح الكود التالي التعليمات:
<%@ لغة الصفحة = "C#" AutoEventWireup = "true" CodeBehind = "Default.aspx.cs" يرث = "customcontroldemo._Default" %><%@ تسجيل Src = "~/footer.ascx" TagName = "footer" TagPrefix="Tfooter" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > < head runat="server"> <title> صفحة بدون عنوان </title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat = "server" Text = "مرحبًا بك في برامج ASP.Net التعليمية"></asp:Label> <br /> <br /> <asp:Button ID = "Button1" runat = "server" onclick = "Button1_Click" نص ="معلومات حقوق الطبع والنشر" /> </div> <Tfooter:footer ID="footer1" runat="server" /> </form> </body></html>
عند التنفيذ، يتم عرض تذييل الصفحة ويكون التحكم متاحًا على جميع الصفحات الموجودة على موقعك.
لاحظ ما يلي:
(1) يحدد أمر التسجيل اسم التسمية وبادئة التسمية لعنصر التحكم.
<%@ تسجيل Src="~/footer.ascx" TagName="footer" TagPrefix="Tfooter" %>
(2) يجب استخدام أسماء العلامات والبادئات التالية عند إضافة عناصر تحكم المستخدم على الصفحة:
<Tfooter:footer ID="footer1" runat="server" />
يتم نشر عناصر التحكم المخصصة كمجموعات منفصلة. يتم تجميعها في مكتبات الارتباط الديناميكي (DLL) واستخدامها كأي عنصر تحكم آخر في خدمة ASP.NET. ويمكن إنشاؤها بأي من الطرق التالية:
من خلال الحصول على عنصر تحكم مخصص من عنصر تحكم موجود.
قم بإنشاء عنصر تحكم مخصص جديد من خلال دمج عنصري تحكم موجودين أو أكثر.
عن طريق الحصول عليه من فئة التحكم الأساسية.
لفهم هذا المفهوم، دعونا ننشئ فئة مخصصة تعرض ببساطة رسالة نصية على المتصفح. لإنشاء عنصر التحكم، اتبع الخطوات التالية:
إنشاء موقع جديد. انقر بزر الماوس الأيمن فوق الحل (وليس المشروع) أعلى الشجرة في Solution Explorer.
في مربع الحوار مشروع جديد، حدد ASP.NET Server Control من قالب المشروع.
تضيف الخطوات المذكورة أعلاه مشروعًا جديدًا وتنشئ تحكمًا مخصصًا كاملاً للحل المسمى ServerControl1. في هذا المثال، اسمحوا لي بتسمية مشروع CustomControls. ومن أجل استخدام عنصر التحكم هذا، يجب إضافته كمرجع إلى صفحة الويب قبل تسجيله في الصفحة. لإضافة مرجع إلى مشروع موجود، انقر بزر الماوس الأيمن على المشروع (وليس الحل) وانقر على "إضافة مرجع".
حدد مشروع CustomControl من علامة التبويب "المشاريع" في مربع الحوار "إضافة مرجع". يمكن لمستكشف الحلول عرض المراجع.
لاستخدام عنصر التحكم الموجود على الصفحة، أضف توجيه التسجيل ضمن توجيه @Page.
<%@ تسجيل التجميع = "CustomControls" Namespace = "CustomControls" TagPrefix = "ccs" %>
علاوة على ذلك، يمكنك استخدام عناصر التحكم مثل أي عنصر تحكم آخر.
<form id="form1" runat="server"> <div> <ccs:ServerControl1 runat="server" Text = "أنا عنصر تحكم خادم مخصص" /> </div> </form>
عند التنفيذ، يتم عرض خاصية النص الخاصة بعنصر التحكم على المتصفح، كما هو موضح أدناه:
في المثال السابق، تم تعيين قيمة خاصية النص للفئة المخصصة. يقوم ASP.NET بإضافة هذه الخاصية بشكل افتراضي عند إنشاء عنصر التحكم. يكشف التعليمة البرمجية التالية بعد ملف عنصر التحكم عن هذا.
باستخدام System;باستخدام System.Collections.Generic;باستخدام System.ComponentModel;باستخدام System.Linq;باستخدام System.Text;باستخدام System.Web;باستخدام System.Web.UI;باستخدام System.Web.UI.WebControls;مساحة الاسم CustomControls{ [ DefaultProperty("Text")] [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1 >")] عام class ServerControl1 : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"] return ((s == null) ? "[" + this.ID + "]" : s } set { ViewState["Text"] = value; } } تجاوز محمي void RenderContents(HtmlTextWriterput) {output.Write(Text) } }}
يتم إنشاء الكود أعلاه تلقائيًا لعنصر تحكم مخصص. يمكن إضافة الأحداث والأساليب إلى فئات التحكم المخصصة.
لنوسع عنصر التحكم المخصص السابق المسمى ServerControl1. لنمنحه طريقة تسمى checkpalindrome والتي ستمنحه الإذن بالتحقق من palindrome.
Palindrome هي قيمة كلمة/حرفية تظل مكتوبة بنفس الطريقة عند عكسها. على سبيل المثال، المالايالامية، سيدتي، ساراس الخ.
قم بتوسيع التعليمات البرمجية لعنصر التحكم المخصص الخاص بك ويجب أن يبدو كما يلي:
باستخدام System;باستخدام System.Collections.Generic;باستخدام System.ComponentModel;باستخدام System.Linq;باستخدام System.Text;باستخدام System.Web;باستخدام System.Web.UI;باستخدام System.Web.UI.WebControls;مساحة الاسم CustomControls{ [ DefaultProperty("Text")] [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1 >")] عام class ServerControl1 : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"] return ((s == null) ? "[" + this.ID + "]" : s } set { ViewState["Text"] = value; } } تجاوز محمي void RenderContents(HtmlTextWriterout) { if (this.checkpanlindrome()) {output.Write("هذا متناظر: <br />");output.Write("<FONT size=5 color=Blue >");output.Write("<B>");output.Write(Text);output.Write("</B>"); output.Write("</FONT>"); else {output.Write("هذا ليس متناظرًا: <br />");output.Write("<FONT size=5 color=red>"); put.Write("<B>");output.Write(Text);output.Write("</B>");output.Write("</FONT>"); if (this.Text != null) { String str = this.Text; String strtoupper = Text.ToUpper(); char[] rev = strtoupper.ToCharArray(); rev); if (strtoupper == strrev) { return true } else { return false } } else { return false } } }}
عندما تقوم بتغيير رمز المساحة، يجب عليك إنشاء الطريقة عن طريق النقر فوق Build -> Build Solution بحيث يمكن أن تنعكس التغييرات في مشروعك. قم بإضافة مربع نص وزر تحكم إلى الصفحة حتى يتمكن المستخدم من توفير جزء من النص. عند النقر على الزر، يتم استخدامه للتحقق من المتناظر.
<form id="form1" runat="server"> <div> أدخل كلمة: <br /> <asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox> <br /> < br /> <asp:Button ID = "Button1" runat = "server onclick = "Button1_Click" Text = "التحقق من Palindrome" /> <br /> <br /> <ccs:ServerControl1 ID="ServerControl11" runat="server" Text = "" /> </div></form>
يقوم معالج حدث النقر الخاص بالزر بنسخ النص الموجود في مربع النص إلى خاصية النص الخاصة بعنصر التحكم المخصص.
protected void Button1_Click(object sender, EventArgs e){ this.ServerControl11.Text = this.TextBox1.Text;}
عند تنفيذ عنصر التحكم بالكشف عن المتناظرات بنجاح.
لاحظ ما يلي:
(1) عند إضافة مرجع إلى عنصر تحكم مخصص، تتم إضافته إلى مربع الأدوات ويمكنك استخدامه مباشرة من مربع الأدوات مثل عناصر التحكم الأخرى.
(2) تم تجاوز طريقة RenderContents لفئة التحكم المخصصة، ويمكنك إضافة الأساليب والأحداث الخاصة بك.
(3) تأخذ طريقة RenderContents معلمة نوع HtmlTextWriter، والتي ستكون مسؤولة عن عرضها على المتصفح.