2010-08-19 12 views
5

मैं नेस्टेड मास्टर पृष्ठों की एक श्रृंखला है, इसलिए जैसे:ASP.NET MVC नेस्टेड मास्टर पेजेस, वारिस सामग्री

site.master:

<asp:ContentPlaceHolder ID="SearchFormContent" runat="server"> 
<%Html.RenderPartial("SearchFormControl"); %> 
</asp:ContentPlaceHolder> 
नेस्ट (बच्चे) मास्टर पृष्ठ में

, क्षेत्र .master

<asp:Content ContentPlaceHolderID="SearchFormContent" ID="SearchFormContentContainer" runat="server"> 
<asp:ContentPlaceHolderID="SearchFormContent" runat="server"/> 
</asp:ContentPlaceHolder> 

मेरे पास दो अलग-अलग सामग्री पृष्ठ हैं। कोई अपनी सामग्री को SearchFormContent में जोड़ना चाहता है, दूसरा शीर्ष-स्तर के मास्टर पेज में परिभाषित सामग्री को रखना चाहता है। बेशक, चूंकि बाल मास्टर पेज सर्चफॉर्मकंटेंट ब्लॉक के लिए सामग्री को परिभाषित करता है ताकि बच्चे के पेज संभावित रूप से इसका उपयोग कर सकें, शीर्ष स्तर के मास्टर पेज में परिभाषित सामग्री को समाप्त कर दिया गया है।

ऐसा करने का कोई तरीका?

+0

मैं भी इसी समस्या का हल ढूंढने के लिए संघर्ष कर रहा हूं। साल या उससे भी ज्यादा समय में आपने पूछा, क्या आपको कभी ऐसा करने का सुविधाजनक तरीका मिला है? – Funka

+0

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

उत्तर

1

मैं अपने बच्चे मास्टर पृष्ठ

<asp:Content ContentPlaceHolderID="SearchFormContent" ID="SearchFormContentContainer" runat="server"> 
    <asp:ContentPlaceHolder ID="SearchFormContent" runat="server"> 
     <%Html.RenderPartial("SearchFormControl"); %> 
    </asp:ContentPlaceHolder> 
</asp:ContentPlaceHolder> 

Nasty मैं में निम्नलिखित होने के अलावा अन्य किसी भी तरह से नहीं सोच सकते हैं पता है, लेकिन मास्टर पृष्ठों का उपयोग करते समय मैं इसका एकमात्र तरीका सोच सकता हूं।

HTHs,
चार्ल्स

+0

मुझे उस जगह पर डुप्लिकेट करना नफरत है। हम कुछ पेजों के बारे में बात कर रहे हैं। –

+0

आपके कुछ मास्टर पेज का मतलब है? क्योंकि आपको केवल (बच्चे) मास्टर पेजों में ऐसा करना है। – Charlino

+0

बाद में साइटफिनिटी में दो साल और एक पूर्ण पुनर्वितरण और माइग्रेशन, इस प्रकार वास्तव में समझ में आता है। –

1

अपने सभी ContentPlaceHolder एस हटाएं और SearchFormControl सीधे साइट.मास्टर पर छोड़ दें। आप तो SearchFormControl ओवरराइड करने के लिए कभी नहीं चाहते हैं तो आप ControlPlaceHolder रों को परिभाषित करने की जरूरत नहीं है

+0

समस्या यह है कि मैं SearchFormControl सामग्री को ओवरराइड करना चाहता हूं। यह साइट के कुछ अलग-अलग क्षेत्रों में अलग-अलग प्रदान किया जाता है, लेकिन कुछ क्षेत्रों को शीर्ष स्तर साइट मास्टर पेज से डिफ़ॉल्ट सामग्री का उपयोग करने की आवश्यकता होती है। –

+1

@ डेविड जीवंत - आपकी दो टिप्पणियों के आधार पर ऐसा लगता है जैसे आप अपने केक चाहते हैं और इसे भी खा सकते हैं। – jfar

1

आप masterpage पर contentPlaceHolder में सामग्री डाल सकते हैं। यदि आप किसी बच्चे पृष्ठ पर किसी सामग्री के साथ ओवरराइड नहीं करते हैं तो डिफ़ॉल्ट रूप से इसे प्रस्तुत किया जाएगा।

+0

जब मैं एक नया "मास्टर पेज का उपयोग कर वेब फॉर्म" जोड़ता हूं तो डिज़ाइनर मास्टर पेज में पाए गए सभी प्लेसहोल्डर ओवरराइड करेगा। क्या उनमें से एक को ओवरराइड न करने का कोई तरीका है? – Adi