2012-02-27 8 views
7

Utworzono odbiornik zdarzeń, ale problem polega na tym, że nie można uzyskać odwołania do SPContext: SPContext.Current zwraca null. Potrzebuję go do dodania niektórych list do witryny. Czy ktoś ma pomysł, jak mogę go zdobyć?Uzyskiwanie SPContext w odbiorniku zdarzeń

Próbowałem również umieszczać punkty przerwania w odbiorniku zdarzeń, ale FeatureActivates nigdy nie uruchamia się z jakiegoś powodu. Jakie jest prawidłowe zdarzenie, które ma być używane, gdy lista jest aktywowana zaraz po de rozmieszczeniu?

Odpowiedz

14

Nie można uzyskać SPContext wewnątrz obsługi - jest to zgodne z projektem. należy użyć właściwości zdarzeń przekazany jako argument do obsługi, aby uzyskać odniesienie do aktualnej sieci, elementu listy itp Na przykład w aktywowanej funkcji obsługi można zrobić to tak:

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

Jeśli Zakres funkcji to Site następnie

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

Co zrobiłem, dziękuję;) –

5

Uznałem, że zakres funkcji ma znaczenie. Jeśli wdrożony funkcję w zakresie serwisu, a następnie można uzyskać w sieci za pomocą tego wiersza kodu:

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

Znam ten wątek jest trochę stary, ale naprawdę należy użyć:

SPWeb web = properties.OpenWeb() 

zgodnie ze sprawdzonymi metodami SP: http://msdn.microsoft.com/en-us/library/ee724407.ASPX Zapewnia, że ​​nie masz żadnych przedmiotów do usunięcia i zapobiega trafieniu w błąd rzucania.

+2

To nie jest dla odbiorników funkcji. –

Powiązane problemy