كيفية إنشاء Custom Control في الـ ASP.NET

18 مارس 2017     384 مشاهدة    0 تعليق
تم النشر في #Custom Controls  # ASP.NET Server Controls 

كما هو من المعروف أن تقنية الـ ASP.NET زودتنا بمجموعة كبيرة من الأدوات الغنية, ولكن قد نضطر في بعض الأحيان إلى إنشاء أداة آخرى تحتوي على مزايا جديدة أو تقوم بغرض لا تقوم به الأدوات الموجودة. سنتعرف اليوم على كيفية إنشاء Custom Control في الـ ASP.NET.

إذا أردت أن تقوم بإنشاء أداة جديدة في الـ ASP.NET فهنالك نوعين من أنواع الأدوات:

  1. User Controls
  2. Custom Controls

قد يبدو أسلها للأغلبيه النوع الأول, لذا أنصح بالتعرف على ال User Controls قبل الخوض في النوع الآخر.

يمكن إنشاء Custom Control :بعدة طرق

  • الوراثة من أداة من أدوات الـ ASP.NET الحالية
  • تركيب مجموعة من أدوات الـ ASP.NET الحالية
  • الوراثة من الفئة Control

محور مقالتنا اليوم عن النوع الثالث وهو كيفية إنشاء Custom Control من الصفر. لنفترض أننا نريد إنشاء أداة مشغل الفيديو, طبعاً لا يوجد أداة من أدوات الـ ASP.NET تقوم بهذه الوظيفة, وكما هو من المعروف أن كثير من المواقع التي تمر علينا قد تحتاج لعرض فيديوهات, طبعاً سنعتمد في مثالنا على الوسم Video الموجود في الـ HTML 5, لذا أرجو مراجعة الرابط التالي.

في البداية قم بعمل مشروع جديد من نوع ASP.NET Server Control, هذا النوع من أنواعه المشاريع يقوم بتصدير الأدوات على شكل dll, ليسهل علينا إستخدامها في أي مشروع آخر, بعكس الـ User Controls.

بعد إنشاء المشروع ما علينا إلا إنشاء الفئة VideoPlayer وذلك بالوراثه من الفئة Control على النحو التالي:

<ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")>
Public Class VideoPlayer
    Inherits WebControl

    Public Property AutoPlay As Boolean
    Public Property ShowControls As Boolean
    Public Property Source As String
    Public Property Format As VideoFormat
    Public Property Poster As String

    Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
        writer.AddAttribute(HtmlTextWriterAttribute.Id, ID)
        writer.AddAttribute(HtmlTextWriterAttribute.Height, Height.ToString())
        writer.AddAttribute(HtmlTextWriterAttribute.Width, Width.ToString())

        If ShowControls Then
            writer.AddAttribute("controls", "controls")
        End If

        If AutoPlay Then
            writer.AddAttribute("autoplay", "autoplay")
        End If

        If Poster IsNot Nothing Then
            writer.AddAttribute("poster", Poster)
        End If

        writer.RenderBeginTag("video")
        writer.AddAttribute(HtmlTextWriterAttribute.Src, Source)
        writer.AddAttribute(HtmlTextWriterAttribute.Type, "video/" & Format.ToString().ToLower())
        writer.RenderBeginTag("source")
        writer.RenderEndTag()
        writer.RenderEndTag()
    End Sub

    Protected Overrides Sub Render(writer As HtmlTextWriter)
        RenderContents(writer)
    End Sub

End Class

طبعاً في الشيفرة المصدرية أعلاه تم تعريف الخواص الأساسية التي يدعمها مشغل الفيديو مثل التشغيل التلقائي, إظهار أدوات الفيديو .. إلخ, وفي الإجراء RenderContents() وهو الإجراء الأساسي لرسم محتويات الأداة في المتصفح, فتم إضفة الوسم video كما هو موضح في الرابط أعلاة وتم إضافة الخواص اللازمة له.

طبعاّ الأداة الحالية تدعم نوع واحد من أنواع الفيديوهات الموضحه كالتالي:

Public Enum VideoFormat
    Mp4
    Ogg
    WebM
End Enum

بعد هذا يمكننا إستخدام الأداة بعد إضافة Reference لمشروع الويب المراد إستخدام الأداة فيه ومن ثم يتم إضافه الـ Directive التالي:

<%@ Register Assembly="MyControls" Namespace="MyControls" TagPrefix="my" %>

طبعاُ يتم تحديد إسم ملف الـ Assembly وفضاء الأسماء الخاص بالـ ASP.NET Server Control وبعدها يتم إستخدام الأداة مثل بقية أدوات الـ ASP.NET

<my:VideoPlayer ID="player" runat="server" Source="https://www.w3schools.com/html/mov_bbb.mp4" ShowControls="true" Format="Mp4" Width="400" />

في الختام أرجو أن يكون المقال أعطى ولو معلومة بسيطة عن الـ Custom Controls ويمكنك من إنشاء أدواتك الخاصه في مشاريعك الآتية.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك