7

SPContextイベントレシーバーを作成しましたが、問題は:SPContext.Currentreturnsへの参照を取得できないことnullです。サイトにリストを追加するために必要です。誰かが私がそれをどうやって手に入れることができるかについての考えを持っていますか?

また、イベントレシーバー内にブレークポイントを配置しようとしましたFeatureActivatesが、何らかの理由でトリガーされませんでした。展開の直後にリストがアクティブ化されたときに使用する正しいイベントは何ですか?

4

3 に答える 3

15

SPContextハンドラーの内部に入ることができません-これは仕様によるものです。ハンドラーに引数として渡されたイベントプロパティを使用して、現在のWeb、リストアイテムなどへの参照を取得する必要があります。たとえば、機能がアクティブ化されたハンドラーでは、次のように実行できます。

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
}
于 2012-02-27T19:30:48.503 に答える
5

機能の範囲が重要だと思いました。この機能をサイトスコープにデプロイした場合は、次のコード行を使用してWebを取得できます。

SPWeb web = (properties.Feature.Parent as SPSite).OpenWeb();
于 2012-08-06T18:13:15.640 に答える
2

このスレッドは古いものですが、実際には次のものを使用する必要があります。

SPWeb web = properties.OpenWeb() 

SPのベストプラクティスに従って:http: //msdn.microsoft.com/en-us/library/ee724407.ASPX これにより、破棄するオブジェクトがなくなり、キャストエラーが発生するのを防ぐことができます。

于 2013-12-06T22:49:18.327 に答える