Quelle est la différence entre SPContext.Current.Web.URL et SPContext.Current.Site lors de l'utilisation de l'objet SPSite ?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/95812

  •  10-12-2019
  •  | 
  •  

Question

SPSite spsite1=new SPSite(SPContext.Current.Web.URL);

SPSite spsite2=SPContext.Current.Site;

Quelle est la différence et quand décidons-nous lequel utiliser ?

Je pense que les deux nous donnent l'objet de collection de sites.

Exemple: SPWeb spweb=spsite1.RootWeb; signifiera la même chose que spsite2.RootWeb; Alors pourquoi y a-t-il 2 façons de procéder ?

Était-ce utile?

La solution

SPSite spsite1=new SPSite(SPContext.Current.Web.Url); te donnera SPSite objet.Mais ce ne sera un objet de collection de sites que lorsque SPContext.Current.Web.Url est celui du web racine.Si l'objet Web est celui d'un sous-site alors SPSite L'objet ne sera pas un objet de collection de sites.La deuxième déclaration SPSite spsite2=new SPSite(SPContext.Current.Site); est faux car il n'y a pas de surcharge de SPSite qui a SPSite comme paramètre.

MISE À JOUR

Si l'intention est d'obtenir le rootweb, la deuxième méthode est une meilleure façon de le faire car vous n'instanciez pas un nouveau SPSite objet.De plus, dans le premier cas, vous devrez disposer SPSite objet lorsque vous en créez un nouveau par rapport à la seconde au cours de laquelle SPSite est récupéré via SPContext qui ne devrait pas être éliminé explicitement.

Autres conseils

Site1 et site2 renvoient le même objet de collection de sites (SPSite).En appelant la propriété RootWeb sur les deux objets, nous pouvons obtenir le même objet de site Web de niveau supérieur (SPWeb).

Instruction1 :SPSite spsite1=nouveau SPSite(SPContext.Current.Web.URL);

Processus:Si nous sommes dans un sous-site et que nous appelons le code ci-dessus, il obtient d'abord l'URL Web actuelle du sous-site et la transmet au constructeur SPSite pour obtenir l'objet Collection de sites actuel.

Instruction2 :SPSite spsite2 = SPContext.Current.Site ;

Processus:Nous sommes maintenant dans le sous-site et nous appelons le code ci-dessus, qui récupère directement l'objet Site Collection.Il n’est pas nécessaire de rechercher un paramètre d’URL Web pour obtenir SiteCollection.

Résultat:

spsite1.RootWeb et spsite2.RootWeb renvoient le même objet SPWeb Web de niveau supérieur.

spsite1.OpenWeb() renvoie l'objet sous-site (SPWeb) si nous sommes en sous-site.spsite2.OpenWeb() renvoie l'objet site de niveau supérieur (SPWeb), même si nous sommes dans un sous-site.

Pour le spsite1, nous devons appeler la méthode dispose pour supprimer l’objet SPSite.Mais pour le spsite2, le sharepoint se chargera de se débarrasser de l'objet SPSite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top