2012-02-27 18 views
7

के अंदर एसपीसीएन्टेक्स्ट प्राप्त करना मैंने एक इवेंट रिसीवर बनाया, लेकिन समस्या यह है कि मुझे SPContext: SPContext.Current का संदर्भ नहीं मिल सकता है null। मुझे साइट पर कुछ सूचियां जोड़ने की ज़रूरत है। क्या किसी के पास कोई विचार है कि मैं इसे कैसे प्राप्त कर सकता हूं?इवेंट रिसीवर

इसके अलावा मैंने ईवेंट रिसीवर के अंदर ब्रेक पॉइंट डालने का प्रयास किया, लेकिन FeatureActivates किसी कारण से कभी ट्रिगर नहीं करता है। तैनाती के बाद एक सूची सक्रिय होने पर उपयोग करने के लिए सही घटना क्या है?

उत्तर

14

आप हैंडलर के अंदर SPContext नहीं प्राप्त कर सकते हैं - यह डिज़ाइन द्वारा है। आप सुविधा सक्रिय हैंडलर में उदाहरण के लिए वर्तमान वेब, सूची आइटम आदि के संदर्भ में प्राप्त करने के लिए हैंडलर के लिए तर्क के रूप में पारित कर दिया घटना गुण का उपयोग करना चाहिए आप इसे इस प्रकार कर सकते हैं:

public override void FeatureActivated(SPFeatureReceiverProperties properties) 
{ 
    SPWeb web = properties.Feature.Parent as SPWeb; 
    //Some code with web 
} 

फ़ीचर स्कोप साइट है तो

public override void FeatureActivated(SPFeatureReceiverProperties properties) 
{ 
     SPSite site = properties.Feature.Parent as SPSite; 
     //Some code with web 
} 
+0

मैंने जो किया, धन्यवाद;) –

5

मुझे लगा कि सुविधा का दायरा मायने रखता है। आप साइट दायरे में सुविधा तैनात हैं तो आप कोड की इस पंक्ति का उपयोग कर वेब प्राप्त कर सकते हैं:

SPWeb web = (properties.Feature.Parent as SPSite).OpenWeb(); 
2

मैं जानता हूँ कि इस सूत्र वर्ष की तरह है, लेकिन वास्तव में आप का उपयोग करना चाहिए:

SPWeb web = properties.OpenWeb() 

एसपी सर्वोत्तम प्रथाओं के अनुसार: http://msdn.microsoft.com/en-us/library/ee724407.ASPX यह सुनिश्चित करता है कि आपके पास निपटान करने के लिए कोई ऑब्जेक्ट नहीं है और आपको कास्टिंग त्रुटि मारने से रोकता है।

+2

यह सुविधा रिसीवर के लिए नहीं है। –

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