Question

J'ai créé un Récepteur d'Événement, mais le problème est que je ne peux pas obtenir une référence à l' SPContext: SPContext.Current retourne null.J'en ai besoin pour ajouter des listes sur le site.Quelqu'un aurait-il une idée de comment je pourrais l'obtenir?

Aussi j'ai essayé de mettre des points de rupture à l'intérieur du récepteur d'événements, mais FeatureActivates jamais déclenche pour une raison quelconque.Qu'est-ce que l'événement correct à utiliser lorsqu'une liste est activée juste après de déploiement?

Était-ce utile?

La solution

Vous ne pouvez pas obtenir SPContext à l'intérieur de gestionnaires - c'est par la conception.Vous devez utiliser les propriétés des événements passé en argument de la gestionnaire pour obtenir une référence de site web en cours, élément de la liste, etc.Par exemple, en fonction activée handler, vous pouvez le faire comme ceci:

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

Si l'action de la Fonction est le Site alors

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

Autres conseils

J'ai pensé que la portée de la fonctionnalité de questions.Si vous avez déployé la fonction de l'étendue du site, alors vous pouvez obtenir sur le web à l'aide de cette ligne de code:

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

Je sais que ce fil est une sorte de vieux, mais vraiment, vous devriez utiliser:

SPWeb web = properties.OpenWeb() 

comme par SP, les meilleures pratiques: http://msdn.microsoft.com/en-us/library/ee724407.ASPX Il assure vous n'avez pas d'objets à jeter et vous empêche de frapper une erreur de casting.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top