سؤال

لقد قمت بإنشاء عنصر تحكم مخصص بسيط يرث فقط من Literal السيطرة ، وليس لديها أي امتدادات حتى الآن ، الكود فارغ.

مساحة الاسم: CustomControls

اسم الفصل: حرفي: System.Web.ui.WebControls.Literal

الشيء التالي الذي أقوم به هو تسجيل هذا التحكم في aspx الصفحة على النحو التالي:

<%@ Register TagPrefix="web" Namespace="CustomControls" %>

(قرأت في عدد قليل من البرامج التعليمية أن هذه واحدة من الطرق لتسجيلها ، إلى جانب web.config وما إلى ذلك)

بعد كل شيء ، لا يوجد ثقل بالنسبة لي ، والأسوأ من ذلك- أحصل على خطأ في تحليل "علامة خادم غير معروفة: الويب" عندما أحاول تشغيل الصفحة مع عنصر التحكم فيه.

لقد استخدمت "إنشاء مشروع جديد" وليس موقعًا جديدًا ، في حالة الحاجة إلى هذه المعلومات.

ماذا قد تكون مشكلتي؟

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

إليكم كيف فعلت ذلك ، خطوة بخطوة تبدأ من لا شيء. تستخدم هذه الطريقة الأولى مشروع/تجميع ثانٍ. لإصدار app_code قم بالتمرير لأسفل.

طريقة مشروع تطبيق الويب

  1. إنشاء تطبيق ASP.NET ويب جديد. لاحظ الاسم ، ويسمى Mine WebApplication2. إذا كان لديك بالفعل تطبيق ويب موجود ، وهو على الأرجح ، انقر نقرًا مزدوجًا على قسم الخصائص في مشروعك والتحقق من خاصية "اسم التجميع" ، وقم بتدوينه.
  2. قم بإنشاء فئة جديدة في تطبيق Web Application المسمى biteral.cs
  3. ضع رمزًا مشابهًا لما يلي للصف الفئة:

    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  4. أضف علامة التسجيل التالية إلى أعلى صفحة ASPX الخاصة بك

    <٪@ register assembly = "webapplication2" namepace = "customControls" tagPrefix = "Web" ٪>

إذا كان اسم التجميع الخاص بك مختلفًا ، فقم بتغييره هنا. لقد لاحظت أنه عندما فعلت هذا في VB.NET ، كانت مساحة الاسم WebApplication1.CustomControls بدلاً من مجرد CustomControls كما كان في C#، نوعًا ما غريبًا.

  1. أضف عنصر التحكم الجديد إلى صفحتك:

    u003Cweb:Literal ID="Literal1" runat="server" Text="test" />

طريقة المشروع منفصلة

  1. إنشاء موقع ويب فارغ جديد (ASP.NET).
  2. أضف مكتبة التحكم في خادم ASP.NET جديدة باسم CustomControls إلى الحل.
  3. أضف فصلًا جديدًا إلى المشروع الجديد المسمى BISTERAL (أنا أستخدم C# لذا تم تسمية ملف My PRITERAL.CS). فيما يلي رمزتي الأساسية الفائقة ، وأعتقد أنه يجب أن يتطابق مع الرمز الموضح في السؤال.

    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  4. أضف إشارة إلى مشروع CustomControls إلى موقع الويب الخاص بك.

  5. أضف تسجيل التجميع إلى أعلى صفحة ASPX الخاصة بك:

    <٪@ register assembly = "customControls" namepace = "customControls" tagPrefix = "Web" ٪>

  6. أضف مثيلًا جديدًا من عنصر التحكم إلى صفحتك:

    u003Cweb:Literal ID="Literal1" runat="server" Text="test" />

في طريقة app_code

  1. إنشاء موقع ويب فارغ جديد (ASP.NET).
  2. أضف فئة جديدة إلى مجلد App_Code BISTAL2 (أنا أستخدم C# بحيث يتم تسمية ملف My PRITERAL2.CS). فيما يلي رمزتي الأساسية الفائقة ، وأعتقد أنه يجب أن يتطابق مع الرمز الموضح في السؤال. لقد أسميته 2 حتى تتمكن من استخدام هذا بالتزامن مع الطريقة الموضحة أعلاه دون الحصول على أخطاء تجميع

    namespace CustomControls
    {
        public class Literal2 : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  3. قم بتسجيل مساحة التجميع/الاسم لـ App_Code في صفحة ASPX الخاصة بك عن طريق إضافة السطر التالي إلى الأعلى

    <٪@ register namespace = "customControls" Assembly = "__ code" tagPrefix = "Web" ٪>

  4. أضف مثيل عنصر التحكم الجديد إلى صفحتك:

    u003Cweb:Literal2 ID="literal2" runat="server" Text="test2" />

لقد اختبرت هذا باستخدام Visual Studio وكان كل شيء يعمل بشكل جيد بالنسبة لي.

نصائح أخرى

يمكنك أيضًا تسجيل عنصر التحكم الخاص بك في web.config إذا كنت ترغب في استخدامه على صفحات أخرى

<pages>
        <controls>
          <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add tagPrefix="web" namespace="MyProject.CustomControls" assembly="MyProject" />
        </controls>
      </pages>

بالنسبة لموقع الويب ، سيعمل هذا

<add tagPrefix ="web" namespace="ASP.App_Code.CustomControls" />

تكمن المشكلة في <%@ Register TagPrefix="web" Namespace="CustomControls" %> العلامة: يفتقد اسم التجميع!

يجب أن تصبح <%@ Register TagPrefix="web" Namespace="CustomControls" Assembly="YourAssemblyName" %>. إذا كانت لديك صعوبات في العثور على اسم التجميع لفصلك ، فإليك بعض التلميحات:

  1. إذا قمت بإنشاء الفصل داخل مشروع Visual Studio الخاص بتطبيق الويب ، أو في مشروع منفصل DLL (مكتبة مشتركة) ، ثم انقر بزر الماوس الأيمن على المشروع وانتقل إلى العقارات للحصول على اسم التجميع
  2. إذا قمت بإنشاء ملف .cs في دليل App_Code ، ASP.App_Code يجب أن تعمل

وإلا يرجى إعطائنا بعض المعلومات حول تخطيط المشروع!

أسهل شيء يجب القيام به هو سحب وإلغاء تسجيل الحرفي. ASCX إلى الصفحة (إذا كانت الصفحة في نفس الحل). إذا كانت الصفحة حلًا آخر ، فيمكنك إضافة عنصر التحكم إلى صندوق الأدوات VS والسحب والألواح -الدورة عنصر التحكم في الصفحة.

لقد نسيت سمة SRC.

<%@ Register TagPrefix="web" Namespace="CustomControls" Src="PathToYourCustomControl" %> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top