2010-06-09 23 views
10

मुझे लगता है कि केवल Literal नियंत्रण से विरासत है, और अभी तक कोई एक्सटेंशन नहीं है एक साधारण कस्टम नियंत्रण बनाया है, कोड खाली है।में ASP.NET सी # कस्टम नियंत्रण

नाम स्थान: CustomControls

कक्षा नाम: शाब्दिक: System.Web.UI.WebControls.Literal

अगला बात मैं करना निम्नलिखित के रूप में aspx पेज में इस पर नियंत्रण को पंजीकृत किया गया है:

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

(मैंने कुछ ट्यूटोरियल्स में पढ़ा है कि यह web.config इत्यादि के अलावा इसे पंजीकृत करने के तरीकों में से एक है)

आखिरकार, कोई भी पूर्णांक नहीं मेरे लिए लापरवाही, और बदतर- मुझे एक पार्स त्रुटि 'अज्ञात सर्वर टैग: वेब' मिलता है जब मैं पृष्ठ को नियंत्रण में चलाने की कोशिश करता हूं।

मैं मामले में यह जानकारी की जरूरत है और न नई वेबसाइट, 'नया प्रोजेक्ट बना' का इस्तेमाल किया।

क्या मेरी समस्या हो सकता है?

अग्रिम धन्यवाद।

+0

"नई परियोजना बनाएं" से आपका क्या मतलब है? फ़ाइल -> नया -> प्रोजेक्ट -> ... (कम से कम वीएस 2005 में) और फिर, आपने क्या लिखा? यह महत्वपूर्ण हो सकता है (यानी आपने अन्य भाषाओं को चुना -> दृश्य सी # -> वेब -> जो भी हो?)। और आपको किसी बिंदु पर एक असेंबली की आवश्यकता है; सवाल यह है कि अगर आपको इसे स्पष्ट रूप से नाम देना है (और मुझे लगता है कि आपको "वेबसाइट" प्रोजेक्ट का उपयोग नहीं करना है, क्योंकि आपके पास App_Code फ़ोल्डर नहीं है)। – scherand

+0

आपकी कस्टम नियंत्रण कक्षा कहां मौजूद है? क्या यह वेबसाइट प्रोजेक्ट में एक क्लास फाइल है या क्या यह अपनी परियोजना में है? –

+0

तो आपके पास 'प्रोजेक्ट कंट्रोल' के लिए दो परियोजनाएं हैं और दूसरा वेब प्रोजेक्ट के लिए है? – Craig

उत्तर

25

यहाँ काम करेंगे चाहते हैं मैं इसे कैसे किया , कुछ भी नहीं से कदम से कदम। यह पहली विधि दूसरी परियोजना/असेंबली का उपयोग करती है। App_code संस्करण स्क्रॉल डाउन के लिए।

वेब अनुप्रयोग परियोजना विधि

  1. एक नया ASP.Net वेब अनुप्रयोग बनाएँ। नाम पर ध्यान दें, मेरा WebAplication 2 कहा जाता है। यदि आपके पास पहले से मौजूद एक मौजूदा वेब एप्लिकेशन है, जो संभव है, तो अपनी परियोजना के गुण अनुभाग पर डबल क्लिक करें और "असेंबली नाम" संपत्ति की जांच करें, इसके बारे में ध्यान दें।

    namespace CustomControls 
    { 
        public class Literal : System.Web.UI.WebControls.Literal 
        { 
        } 
    } 
    
  2. अपने aspx के शीर्ष करने के लिए निम्न रजिस्टर टैग जोड़ें:

  3. Literal.cs
  4. नामित वेब applcation वर्ग defenition के लिए निम्न के समान कोड में डाल में एक नया वर्ग बनाएं पेज

    <% @ रजिस्टर विधानसभा = " WebApplication2 " नाम स्थान = " CustomControls " tagprefix = " वेब "% >

यदि आपका विधानसभा नाम अलग था तो इसे यहाँ बदल जाते हैं। मैंने देखा है कि नाम स्थान सिर्फ CustomControls के बजाय WebApplication1.CustomControls था जब मैं VB.Net में ऐसा किया है जैसे कि यह सी # में था, एक तरह से अजीब।

< वेब:

  1. अपने पृष्ठ के लिए नए नियंत्रण जोड़ें शाब्दिक आईडी = " Literal1 " runat = " सर्वर " पाठ = " परीक्षण "/>

अलग परियोजना विधि

  1. एक नई खाली वेबसाइट (एएसपी.Net) बनाएं।
  2. समाधान में कस्टमकंट्रोल नामक एक नई एएसपी.Net सर्वर नियंत्रण लाइब्रेरी जोड़ें।
  3. लिटरल नामक नई परियोजना में एक नई कक्षा जोड़ें (मैं सी # का उपयोग कर रहा हूं इसलिए मेरी फाइल को literal.cs नाम दिया गया है)। नीचे मेरा सुपर मूल कोड है, मुझे विश्वास है कि प्रश्न में वर्णित कोड से मेल खाना चाहिए।

    namespace CustomControls 
    { 
        public class Literal : System.Web.UI.WebControls.Literal 
        { 
        } 
    } 
    
  4. अपनी वेबसाइट पर कस्टमकंट्रोल परियोजना का संदर्भ जोड़ें।

  5. अपने aspx पृष्ठ के शीर्ष पर विधानसभा पंजीकरण जोड़ें:

    <% @ रजिस्टर विधानसभा = " CustomControls " नाम स्थान = " CustomControls " tagprefix = " वेब "% >

  6. एक नया जोड़े आपके पृष्ठ पर नियंत्रण का उदाहरण:

    < वेब: लिटल आईडी = " Literal1 " runat = " सर्वर " पाठ = " परीक्षण "/>

App_Code विधि में

  1. एक नया खाली वेबसाइट (ASP.Net) बनाएँ।
  2. App_Code फ़ोल्डर में एक नई कक्षा जोड़ें Literal2 (मैं सी # का उपयोग कर रहा हूं इसलिए मेरी फ़ाइल को literal2.cs नाम दिया गया है)। नीचे मेरा सुपर मूल कोड है, मुझे विश्वास है कि प्रश्न में वर्णित कोड से मेल खाना चाहिए।मैं इसे 2 कहा जाता है, ताकि आप विधि शीर्ष

    को निम्न पंक्ति जोड़कर त्रुटियों

    namespace CustomControls 
    { 
        public class Literal2 : System.Web.UI.WebControls.Literal 
        { 
        } 
    } 
    
  3. रजिस्टर अपने aspx पृष्ठ में app_code के लिए विधानसभा/नाम स्थान संकलन प्राप्त किए बिना ऊपर वर्णित के साथ संयोजन के रूप में इसका उपयोग कर सकते

    <% @ रजिस्टर नामस्थान = " CustomControls " विधानसभा = " __code " tagprefix = " वेब "% >

  4. अपने पृष्ठ के लिए नए नियंत्रण का एक उदाहरण जोड़ें:

    < वेब: Literal2 आईडी = " literal2 " runat = " सर्वर " पाठ = " test2 "/>

मैं इस का उपयोग करते हुए दृश्य स्टूडियो का परीक्षण किया और यह सब मेरे लिए ठीक काम किया।

+0

विस्तृत जानकारी के लिए धन्यवाद, यह पूरी तरह से वेब साइट पर काम करता है परियोजना। समस्या VS2008 में WebApplicationProject के साथ है। – Mahes

+1

@ माहेस - मैंने वेब एप्लिकेशन दिशानिर्देशों को शामिल करने के लिए अपना उत्तर अपडेट कर दिया है (वे शीर्ष पर हैं)। – Peter

+0

@ माहेस - अगर मुझे आपके द्वारा पोस्ट किया गया कोड आपके लिए काम नहीं करता है तो कृपया मुझे बताएं। – Peter

2

तुम भी 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" /> 
+1

में WebApplicationProject में समस्या होती है प्रतिक्रिया के लिए धन्यवाद, बात यह है कि- मेरे पास अभी तक कोई असेंबली फ़ाइल नहीं है, और जैसा कि मैंने समझा है, नियंत्रण केवल टैगप्रिफ़िक्स और नेमस्पेस द्वारा ही असेंबली के बिना पंजीकृत किया जा सकता है। क्या मैं सही हू ? – geevee

+1

यदि आपने कोई वेब एप्लिकेशन प्रोजेक्ट बनाया है तो आपके पास एक असेंबली होगी, देखें: http://dl.dropbox.com/u/6561262/project-settings.png – orjan

2

समस्या आपके <%@ Register TagPrefix="web" Namespace="CustomControls" %> टैग में निहित है: यह असेंबली नाम याद करती है!

यह <%@ Register TagPrefix="web" Namespace="CustomControls" Assembly="YourAssemblyName" %> बनना चाहिए।

  1. यदि आप वेब अनुप्रयोग के दृश्य स्टूडियो परियोजना के अंदर श्रेणी का निर्माण, या एक अलग DLL में (शेयर की गई लाइब्रेरी) परियोजना, तो दाएं: यदि आप अपने वर्ग के लिए विधानसभा नाम खोजने कठिनाइयों है, तो यहाँ कुछ संकेत दिए हैं परियोजना क्लिक करें और गुण के लिए जाने के विधानसभा नाम
  2. पाने के लिए आप App_Code निर्देशिका में .cs फ़ाइल बनाया है, तो ASP.App_Code काम करना चाहिए

अन्यथा हमें परियोजना लेआउट के बारे में कुछ जानकारी दे कृपया!

+0

धन्यवाद। असेंबली नाम को निर्दिष्ट करने से VS2008 में WebApplicationProject के साथ समस्या को हल नहीं किया जाता है – Mahes

1

करने के लिए सबसे आसान काम खींचें और ड्रॉप करने के लिए पेज पर Literal.ascx (अगर पृष्ठ एक ही समाधान में है) है.अगर पेज एक अन्य समाधान है, तो आप वी.एस. टूलबॉक्स में नियंत्रण जोड़ सकता है और पृष्ठ पर नियंत्रण खींचें और छोड़ें।

0

आप src विशेषता को भूल गए हैं।

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