2009-05-10 6 views
5

मैं किसी मौजूदा साइट पर मास्टर पेज जोड़ना चाहता हूं लेकिन पाया है कि एक बार जब मैं करता हूं, तो तत्वों की आईडी कोड के साथ प्रीपेड हो जाती है (उदा। ctl00_MainPageContent_)।मास्टर पेज को तत्व आईडी बदलने से रोकने के लिए कोई तरीका?

अनजाने में, यह उस पृष्ठ पर मौजूद मौजूदा स्क्रिप्ट को तोड़ता है जो मूल, असम्बद्ध तत्व आईडी का उपयोग करता है।

मुझे एहसास है कि मैं इसे <%= Element.ClientID %> से बदल सकता हूं लेकिन यह बहुत ही अच्छा होगा अगर मैं इस व्यवहार को पूरी तरह से अक्षम कर सकता हूं।

तो, क्या मैं मूल आईडी रख सकता हूं?

उत्तर

5

सवाल पहले से ही पिछले पोस्ट में जवाब दिया गया था: Remove MasterPage Generated ID

समाधान निम्न कोड के साथ प्रस्तुत घटना को ओवरराइड करता है:

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) 
    Dim Html As New StringWriter() 
    Dim Render As New HtmlTextWriter(Html) 
    MyBase.Render(Render) 
    writer.Write(Html.ToString().Replace("name=""ctl00$ContentBody$", _ 
        "name=""").Replace("id=""ctl00_ContentBody_", "id=""")) 
End Sub 
+0

दिलचस्प दृष्टिकोण। क्या इस तरह के पूर्ण पृष्ठ आउटपुट को पकड़ने के लिए कोई प्रदर्शन विचार है? या भविष्य में नामकरण सम्मेलन में बदलाव के साथ संभावित मुद्दे? –

+0

प्रदर्शन हिट इस मामले में नगण्य है। हालांकि, इसे एक समाधान माना जाना चाहिए, न कि एक स्थायी समाधान, क्योंकि आप इस तरह से हो रहे हैं कि मास्टर पेज अद्वितीय आईडी उत्पन्न करते हैं। फिर भी, एक सकारात्मक यह है कि यदि भविष्य में मास्टर पेज तत्वों के नामकरण सम्मेलन में परिवर्तन होता है, तो आपको केवल रेंडर ईवेंट में एक बदलाव करना होगा। –

+0

सुनिश्चित नहीं है कि यह जाने का तरीका है ... हार्डकोडिंग खराब है और यदि आप कंटेनरों को पुनर्व्यवस्थित करते हैं .. तर्क टूट जाता है। – Ben

4

आप नियंत्रण में ClientID और UniqueID ओवरराइड कर सकते हैं। यह here से है, रिक स्ट्राल का एक लेख।

public override string UniqueID 
{ 
    get 
    { 
     return this.ID; 
    } 
} 

public override string ClientID 
{ 
    get 
    { 
     return this.ID; 
    } 
} 
+0

यह भी एक दिलचस्प विचार है, लेकिन मुझे नहीं लगता कि यह मेरे लिए काम करेगा क्योंकि इसमें पोस्ट बैक के साथ कुछ गंभीर सीमाएं हैं और मैं मौजूदा कोड में किए गए परिवर्तनों को सीमित करने की कोशिश कर रहा हूं आधार। धन्यवाद! –

संबंधित मुद्दे