مشاركة عبر


بناء جملة عنصر تحكم خادم مخصص

يتم استخدام بناء جملة عنصر تحكم خادم مخصص لتعريف متغير عناصر تحكم المستخدم وعناصر تحكم الخادم المخصصة كعناصر ترميز في ملفات تطبيق الـ ASP.NET بما في ذلك صفحات ويب ، عناصر تحكم المستخدم ، الصفحات الرئيسية. بناء الجملة هذا يماثل تقريباً بناء جملة المستخدم لإعلان كافة عناصر الخادم ASP.NET إلا أن عناصر التحكم المخصصة "و" المستخدم تقوم عادةً بتعريفه بادئة بعلامة فريد واسم العلامة المقابل لعنصر التحكم الخاص بك.

<tagprefix:tagname id="OptionalID"
   attributename="value"
   eventname="eventhandlermethod"
   runat="server" />
OR
<tagprefix:tagname id="OptionalID"
   runat="server" />

السمات

  • tagprefix
    الاسم المستعار لمساحة الاسم المؤهل بالكامل لعناصر الترميز المستخدمة في تشغيل الصفحة. قيمة الاسم المستعار إجبارية ولكن يوفر طريقة مختصرة لإقران ترميز عنصر تحكم مخصص أو عنصر تحكم المستخدم مع مساحة أسماء عناصر الترميز التي تم تعريفها في ملف ASP.NET.

  • tagname
    عنصر تحكم مخصص tagnameيشير إلى اسم النوع الذي سيقوم بإنشاء ASP.NET وقت تشغيل مثيل . لعنصر تحكم المستخدم tagname المخططات لملف المصدر المقترنة التي تعرّف عنصر تحكم المستخدم وتقوم بتعريف هذا الملف على النوع الذي ASP.NET بدوره ينشئ المثيل.

  • id
    معرّف فريد يمكّن للبرمجي مرجع إلى عنصر تحكم.

  • attributename
    اسم السمة الذي يتوافق مع خاصية عنصر التحكم.

  • value
    القيمة التي تم تعيينها إلى السمة (خاصية).

  • eventname
    اسم الحدث في عنصر تحكم.

  • eventhandlermethod
    اسم معالج الأحداث ، تعريف لمعالجة الحدث المحدد لعنصر تحكم.

ملاحظات

استخدم بناء الجملة لعنصر التحكم الخادم مخصصة لتعريف عنصر تحكم المستخدم وعناصر التحكم المخصصة للخادم داخل النص الأساسي للصفحة ويب ASP.NET. للحصول على بناء الجملة هذا يجب العمل على تسجيل عنصر التحكم على الصفحة أو في ملف التكوين (يمكنك تسجيل عنصر تحكم في كل الصفحات لتطبيق ما عن طريق إضافته إلى < عناصر تحكم > ملف ويب.config). يمكنك تسجيل عنصر تحكم في صفحة مفردة باستخدام التوجيه تسجيل @.

يجب أن تتضمن العلامة فتح عنصر المستخدم أو عنصر تحكم مخصص runat="server"/ السمة ينشئ ازدواجًا. لتمكين الرجوع إلى عنصر التحكم البرمجي يمكنك بشكل اختياري تحديد القيمة الفريدة idالسمة.

أي من الخصائص التي تم كتابتها على مستخدم أو عنصر تحكم مخصص لخادم متاحة للاستخدام العام بشكل إلزامي في علامة فتح عنصر تحكم الخادم. ببساطة قم بتعريف الخاصية كسمة وتعيين القيمة. على سبيل المثال، إذا قمت بإنشاء عنصر تحكم مربع نص مخصص مع widthالخاصية، للتصريح width="50" في العلامة فتح عنصر التحكم بتعيين العرض عرض عنصر التحكم الخادم إلى خمسين بكسل.

في بعض الحالات، قد تكون سمات الكائنات التي لها الخصائص الخاصة بهم. في هذه الحالة، قم بتضمين اسم الخاصية في التعريف. على سبيل المثال، إذا قمت بإنشاء عنصر تحكم مربع نص مخصص الذي يتضمن fontالسمة, فإنه يمكن أن يتضمن nameالخاصية. إمكانية ثم تعريف الخاصية في علامة فتح عنصر تحكم الخادم كـ font-name="Arial". للحصول على أكثر راجع معلومات حول تطوير عناصر التحكم المخصصة الخادم مع الخصائص خصائص بسيطة التحكم الملقم و Subproperties.

يمكن تعريف الأحداث مع عناصر التحكم المخصصة الخادم وعناصر المستخدم تفعل مع أي عنصر تحكم ASP.NET الخادم بنفس الطريقة. تحديد ربط الحدث في علامة فتح عنصر تحكم الخادم مع السمة والقيمة. للحصول على مزيد من المعلومات حول عناصر تحكم الخادم المخصصة التي تدعم أحداث تأليف راجع حدث ملقم المعالجة في صفحات ويب ASP.NET.

يمكن استخدام عناصر تحكم الخادم المخصصة التي تدعم وتطور القوالب الموضوعية. للحصول على تفاصيل حول كيفية تعريف متغير القوالب في مخصص الخادم التحكم, راجع عنصر تحكم خادم مضمّن قالب بناء الجملة. لمعرفة كيفية كاتب عناصر تحكم الخادم المخصصة التي تدعم قوالب مضمنة راجع كيفية: إنشاء عناصر تحكم المستخدم ASP.NET Templated.

مثال

يوضح مثال البرمجية التالي كيف يمكن التسجيل وقد تقوم بتعريف عنصر تحكم مخصص لخادم في الصفحة ويب ASP.NET. ينشئ المقطع الأول من تعليمات برمجية عمومية فئة مشتقة من Buttonالفئة. الجزء الثاني من تعليمات برمجية عبارة عن صفحة ويب التي تستضيف زر مخصص. لاحظ أن صفحة ويب تستخدم @ Register لتسجيل مساحة الاسم لعنصر تحكم و لتعيين tagprefixالسمة. الإشارة لعنصر التحكم ثم في الصفحة عن طريق استخدام tagprefixالقيمة و اسم فئة عنصر تحكم مفصولة بنقطتين (:).

لتشغيل مثال التعليمات البرمجية , يجب عليك التحويل برمجياً للتعليمات البرمجية المصدر . يمكنك تحويله برمجياً مباشرة و وضع ناتج التجميع في مجلد سلة موقع ويب الخاص بك أو في مخزن التجميع العمومي المؤقت. بشكل بديل، يمكنك وضع التعليمات البرمجية المصدر في مجلد App_Code للموقع الخاص بك ، حيث سيتم تحويله برمجيا بشكل حيوي وقت التشغيل . يستخدم هذا المثال رمز البرمجي الحيوية لماذا @ Register في الصفحة للتصريح Assemblyالسمة (لأنها قد تم تحويلها برمجياً إلى المصدر بشكل حيوي في وقت التشغيل). للحصول على الإرشادات التفصيلية التي توضح كيفية التحويل البرمجي، راجع الإرشادات التفصيلية: تطوير و استخدام عنصر تحكم خادم مخصص.

ملاحظة الأمانملاحظة الأمان

يحتوي هذا المثال على مربع نص يقبل إدخال المستخدم و الذي يعد تهديد أمان محتمل.بشكل افتراضي، تتحقق صفحات ويب ASP.NET من أن مُدخلات المستخدم لا تتضمن برنامج نصي أو عناصر HTML.لمزيد من المعلومات، راجع نظرة عامة حول عمليات استغلال البرنامج النصي.

// A custom Button control to reference in the page.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Permissions
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand,
  Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class CustomButton : Button
  {
    public CustomButton()
    {
      this.Text = "Click Here";
    }
  }
}

<!-- A page that references the custom control. -->
<%@Page language="C#" %>
<!-- This directive does not require the assembly attribute 
     because the source file is in the App_Code directory, 
     so it gets dynamically compiled with the page. -->
<%@ Register TagPrefix="custom"  
    namespace="Samples.AspNet.CS.Controls" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html>   
 <script runat="server">
     private void custButton_Click(Object sender, EventArgs e)
     {
       TextBox.BackColor = System.Drawing.Color.Green;
       TextBox.Text = "You clicked the button";
     }       
 </script>
 <body>      
    <form id="Form1" runat=server>
       Here is the custom button.<br>
       <custom:CustomButton runat="server" id="custButton" 
         onclick="custButton_Click" /> 
       <br>
       <br>
       <asp:TextBox id = "TextBox" Text="Click the button"
        Width = "200" BackColor="Cyan" runat="server" /> 
       <br>      
    </form>         
  </body>          
</html>
' A custom Button control to reference in the page.
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.Configuration
Imports System.Data.Sql
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class CustomButton
    Inherits Button

    Public Sub New()
      Me.Text = "Click Here"
    End Sub

  End Class

End Namespace
<!-- A page that references the custom control. -->
<%@ Page Language="VB" %>
<!-- This directive does not require the assembly attribute 
     because the source file is in the App_Code directory, 
     so it gets dynamically compiled with the page. -->
<%@ Register TagPrefix="custom"
    namespace="Samples.AspNet.VB.Controls" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>   
 <script runat="server">
   Sub custButton_Click(ByVal sender As Object, _
    ByVal e As EventArgs)
     TextBox.BackColor = Drawing.Color.Green
     TextBox.Text = "You clicked the button."
   End Sub
 </script>
 <body>      
    <form id="Form1" runat=server>
       Here is the custom button.<br>
       <custom:CustomButton runat="server" id="custButton" 
         onclick="custButton_Click" /> 
       <br>
       <br>
       <asp:TextBox id = "TextBox" Text="Click the button"
        Width = "200" BackColor="Cyan" runat="server" /> 
       <br>      
    </form>         
  </body>          
</html>

راجع أيضًا:

المبادئ

نظرة عامة حول بناء جملة صفحة ASP.NET على ويب