2010-01-04 7 views
5

सेट है:कैसे स्वत: जनरेट की मास्टर संपत्ति के साथ नाम स्थान इस समस्या को ठीक करने के लिए यदि MasterType इस मुद्दे मैं अंत में निम्नलिखित समस्या का समाधान के लिए पूछने का फैसला किया होने के सप्ताह के बाद

.aspx पेज में आप सेट कर सकते हैं

<%@ MasterType VirtualPath="~/Mastername.master" %> 

यह .aspx.designer

public new Mastername Master { 
    get { 
     return ((Masternamee)(base.Master)); 
    } 
} 

वर्क्स बिल्कुल ठीक में एक ऑटो उत्पन्न संपत्ति का परिणाम है। लेकिन अगर मैं .aspx फ़ाइल में परिवर्तन करते हैं, संपत्ति नई ऑटो उत्पन्न हो जाएगा और यह निम्नलिखित की तरह दिखता है:,

public new NAMESPACE1.Mastername Master { 
      get { 
       return ((NAMESPACE1.Mastername)(base.Master)); 
      } 
     } 

संकलन बाद में संभव नहीं होगा क्योंकि masterpage के लिए वर्ग पर हल नहीं किया जा सकता है दिए गए नेमस्पेस। मास्टरपेज में NAMESPACE1 नामस्थान के रूप में है।

प्रत्येक सामग्री पृष्ठ में एक ही NAMESPACE1 है। स्वत: उत्पन्न संपत्ति NAMESPACE1 में मास्टरपेज क्लास की तलाश करने का प्रयास करती है .NAMESPACE1 जो विफल हो जाएगी, क्योंकि यह अस्तित्व में नहीं है। बेशक मैं पहले NAMESPACE1 को हटा सकता हूं। ऐप को फिर से संकलित करने के लिए, लेकिन यह लगभग हर बार ऐसा करने के लिए बेकार है जब मैं .aspx फ़ाइल में परिवर्तन करता हूं।

क्या इस समस्या से बचने का कोई तरीका है? एकमात्र तरीका मैं सोच सकता हूं, ऑटो उत्पन्न संपत्ति को अनदेखा करना और हर बार जब मैं मास्टरपेज तक पहुंच प्राप्त करना चाहता हूं तो एक स्पष्ट कलाकार बनाना है।

संपादित करें: मैं विजुअल स्टूडियो 2008 व्यावसायिक एसपी 1 का उपयोग कर रहा हूं।

+0

BTW काम करेंगे, मैं VS2010 – citronas

उत्तर

0

मैं एक समाधान है कि काम करता है पाया। मैं डिजाइनरफाइल में स्वत: उत्पन्न संपत्ति का उपयोग नहीं करूंगा। मैं अपनी खुद की रैपर संपत्ति लिखूंगा जो मैं प्रत्येक सामग्री पृष्ठ में लागू करता हूं।

+1

जो बिल्कुल भी संतोषजनक नहीं है। – mcoolbeth

+0

@mcoolbeth: एक बेहतर समाधान मिला? – citronas

+0

@citronas: दुख की बात है, नहीं। अगर मेरी टिप्पणी अमानवीय हो गई तो मैं क्षमा चाहता हूं। यह सहानुभूतिपूर्ण था। अगर मुझे क्लीनर समाधान मिल जाए तो मैं यहां एक उत्तर पोस्ट करूंगा। – mcoolbeth

1

किसी कारण से डिजाइनर का मानना ​​है कि मास्टर पेज को नेमस्पेस NAMESPACE1 में परिभाषित किया गया है, इसलिए इसकी नामस्थान को संभवतः संशोधित नहीं किया गया है (संभवतः गलती से) मास्टर पेज परिभाषा (और पीछे कोड) देखें।

यदि कुछ भी स्पष्ट नहीं है, तो NAMESPACE1 के लिए सभी फ़ाइलों (* .cs, * .aspx, * .master, ...) में एक खोज की आवश्यकता हो सकती है।

(यह वह जगह है, जहां एक VCS का उपयोग कर मदद मिलेगी --- आप परिवर्तनों के इतिहास की जांच कर सकता है।)

+0

यह समस्या को अपग्रेड करने के बाद कि इस मुद्दे था कभी नहीं किया है serveral विभिन्न परियोजनाओं में होता है। इनमें से किसी भी परियोजना में मास्टरपेज का नामस्थान नहीं बदला था। – citronas

1

असल में यह एक डिजाइनर "फीचर" है। ;-)

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

+0

क्या बदलते हैं? – pashute

0

मुझे यह वही समस्या थी जब मैंने <%@ MasterType VirtualPath="~/TestMaster.Master" %> को SOURCE व्यू में अपने एएसपीएक्स पेज में जोड़ा। किसी कारण से, पृष्ठ कभी भी सही ढंग से नहीं बनाया गया और मुझे अमान्य नेमस्पेस त्रुटियां दे रही थी जब तक कि मैं वास्तव में डिज़ाइन व्यू में बदल गया और नियंत्रण का आकार बदल गया और अंत में त्रुटि चली गई। कहीं यह कुछ कैश किए गए डेटा का उपयोग कर रहा था (यहां तक ​​कि एक बिल्ड/क्लीन सॉल्यूशन ने इसे साफ़ नहीं किया था) और जब तक कि डिज़ाइनर पृष्ठ को पुन: प्रयास नहीं करता, यह उस त्रुटि को उत्पन्न करता है।

0

बदलें

<%@ MasterType VirtualPath="~/Mastername.master" %> 

<%@ MasterType TypeName="Mastername" %> 

को यह पूरी तरह से

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