ما الفرق بين SPContext.Current.Web.URL وSPContext.Current.Site عند استخدام كائن SPSite؟

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

  •  10-12-2019
  •  | 
  •  

سؤال

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

SPSite spsite2=SPContext.Current.Site;

ما الفرق ومتى نقرر أيهما سنستخدم؟

أشعر أن كلاهما يقدم لنا كائن مجموعة المواقع.

مثال: SPWeb spweb=spsite1.RootWeb; سوف يعني نفس spsite2.RootWeb; إذن لماذا هناك طريقتان للقيام بذلك؟

هل كانت مفيدة؟

المحلول

SPSite spsite1=new SPSite(SPContext.Current.Web.Url); سوف أعطيك SPSite هدف.ولكن سيكون كائن مجموعة الموقع فقط عندما SPContext.Current.Web.Url هو شبكة الجذر.إذا كان كائن الويب هو موقع فرعي، إذن SPSite لن يكون الكائن كائن مجموعة مواقع مشتركة.البيان الثاني SPSite spsite2=new SPSite(SPContext.Current.Site); هو الخطأ لأنه لا يوجد الزائد SPSite الذي لديه SPSite كمعلمة.

تحديث

إذا كانت النية هي الحصول على شبكة الجذر، فإن الطريقة الثانية هي الطريقة الأفضل للقيام بذلك لأنك لا تقوم بإنشاء نسخة جديدة SPSite هدف.علاوة على ذلك، في الحالة الأولى سوف تحتاج إلى التخلص منها SPSite كائن أثناء قيامك بإنشاء كائن جديد مقارنةً بالثاني الذي فيه SPSite يتم استرجاعها من خلال SPContext والتي لا ينبغي التخلص منها صراحة.

نصائح أخرى

يقوم كل من site1 وsite2 بإرجاع نفس كائن مجموعة الموقع (SPSite).من خلال استدعاء خاصية RootWeb على كلا الكائنين، يمكننا الحصول على نفس كائن موقع الويب ذي المستوى الأعلى (SPWeb).

التعليمات 1:SPSite spsite1=new SPSite(SPContext.Current.Web.URL);

عملية:إذا كنا في موقع فرعي وقمنا باستدعاء الكود أعلاه، فيجب أولاً الحصول على عنوان URL الحالي للموقع الفرعي وتمريره إلى مُنشئ SPSite للحصول على كائن مجموعة الموقع الحالي.

التعليمات 2:SPSite spsite2 = SPContext.Current.Site;

عملية:نحن الآن في الموقع الفرعي ونستدعي الكود أعلاه، والذي يسترد كائن مجموعة الموقع مباشرة.لا يوجد أي معلمة URL للبحث على الويب للحصول على SiteCollection.

نتيجة:

يقوم spsite1.RootWeb وspsite2.RootWeb بإرجاع نفس كائن SPWeb على الويب ذو المستوى الأعلى.

تقوم spsite1.OpenWeb() بإرجاع كائن الموقع الفرعي (SPWeb) إذا كنا في الموقع الفرعي.تقوم spsite2.OpenWeb() بإرجاع كائن موقع المستوى الأعلى (SPWeb)، حتى لو كنا في موقع فرعي.

بالنسبة إلى spsite1، يتعين علينا استدعاء طريقة التخلص للتخلص من كائن SPSite.لكن بالنسبة إلى spsite2، ستهتم نقطة المشاركة بالتخلص من كائن SPSite.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top