2011-06-13 17 views
16

में कॉल विधि मेरे पास मेरे एएसपीनेट मास्टर पेज में एक सार्वजनिक विधि है। क्या इसे किसी सामग्री पृष्ठ से कॉल करना संभव है और यदि ऐसा है तो चरण/वाक्यविन्यास क्या हैं?मास्टर पेज

उत्तर

36

Page भीतर से आप एक विशिष्ट प्रकार (अपने स्वयं के Master के प्रकार है कि वांछित कार्यशीलता को उजागर करता है) के लिए Master पेज डाली प्रकार बेमेल पर किसी भी अपवाद कदम ओर as का उपयोग कर सकते हैं:

var master = Master as MyMasterPage; 
if (master != null) 
{ 
    master.Method(); 
} 

उपरोक्त कोड में, यदि MasterMyMasterPage प्रकार नहीं है तो masternull होगा और कोई विधि कॉल करने का प्रयास नहीं किया जाएगा; अन्यथा इसे उम्मीद के रूप में बुलाया जाएगा।

+0

+1। –

+2

उवे केम के पहले जवाब देखें; मुझे इसका उपयोग करना बहुत आसान लगता है। – Tim

5
MyMasterPageType master = (MyMasterPageType)this.Master; 
master.MasterPageMethod(); 
+0

क्या आप इसे अपने पेज के शीर्ष पर एक स्थिर सदस्य के रूप में जोड़ सकते हैं? – suggy1982

+0

एक स्थिर सदस्य नहीं है, क्योंकि मास्टर पेज वर्तमान में अनुरोध को संभालने वाले पृष्ठ के लिए विशिष्ट है। आप मास्टर पेज के लिए एक इंस्टेंस प्रॉपर्टी बना सकते हैं यद्यपि: 'निजी MyMasterPageType मास्टर {get {return (MyMasterPageType) प्राप्त करें। मस्टर; }} अमान्य कास्ट हैंडलिंग के लिए ' –

10

आप बस की तरह कर सकते हैं ... विवरण ACCESS A METHOD IN A MASTER PAGE WITH CODE-BEHIND

+0

क्या आप इसे अपने पृष्ठ के शीर्ष पर स्थिर सदस्य के रूप में जोड़ सकते हैं? – suggy1982

13

उपयोग MasterType directive जैसे जैसे के लिए

MasterPageClassName MasterPage = (MasterPageClassName)Page.Master; 
MasterPage.MasterMethod(); 

की जांच:

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

तो फिर तुम इस तरह विधि का उपयोग कर सकते हैं:

Master.Method(); 
संबंधित मुद्दे