لا يمكن إلغاء الحذف في قائمة Item Eld Integriver طريقة في CMSPublishingSite # 2

StackOverflow https://stackoverflow.com/questions/2403829

  •  18-09-2019
  •  | 
  •  

سؤال

باستخدام SharePoint 2010 RC أواجه مشكلات إلغاء حذف عنصر قائمة باستخدام أجهزة استقبال الأحداث. الرمز الخاص بي يطلق النار، مما يؤدي إلى إعداد خاصية إلغاء spitemeventproperties، قم بتعيين رسالة خطأ، ورمي خطأ مرة أخرى إلى مؤشر ترابط الاتصال. يعمل هذا النهج بشكل جيد في طرق إضافة / تحديث، ومع ذلك، عند استخدامه في طريقة الحذف، يمكنني مشاهدة Fire Fire في مصحح الأخطاء، ولكن لا يزال العنصر يتحرك إلى صندوق إعادة تدوير الموقع.

علاوة على ذلك، أرى هذا السلوك في موقع تم إنشاؤه من قالب "CMSPublishingSite # 2" من Stsadm، ولكن ليس من موقع تم إنشاؤه من قالب "موقع الفريق" عبر الإدارة المركزية.

يتبع رمز سوء التصرف:

public override void ItemDeleting(SPItemEventProperties properties)
{
    if (!(properties.UserLoginName == "SHAREPOINT\\system"))
    {
        try
        {
            throw new CreatorIdAliasingException("Please contact support if you feel a release web site has been inappropriately assigned to your organization.");
        }
        catch (CreatorIdAliasingException ex)
        {
            properties.Cancel = true;
            properties.ErrorMessage = ex.ToString();
            properties.InvalidateListItem();
            throw;
        }
    }
}

للرجوع اليها، يتم احتواء رمز متطابق في طريقة ItemAdding ويعمل كما هو متوقع.

public override void ItemAdding(SPItemEventProperties properties)
        {
            base.ItemAdding(properties);
            if (!(properties.UserLoginName == "SHAREPOINT\\system"))
            {
                try
                {
                    throw new InvalidCreatorIdException("Please contact support to add a known URL to your list of release web sites.");
                }
                catch (InvalidCreatorIdException ex)
                {
                    properties.Cancel = true;
                    properties.ErrorMessage = ex.ToString();
                    properties.InvalidateListItem();
                    throw;
                }
            }
        }
هل كانت مفيدة؟

المحلول

أود أن أوصي بك عدم استخدام استثناءات كجزء من منطق عملك. الاستثناءات مكلفة ويجب استخدامها فقط في حالات استثنائية لا يتم التعامل معها بواسطة المنطق العادي.
بدلا من ذلك، استخدم شيئا مثل هذا:

public override void ItemDeleting(SPItemEventProperties properties)
{
  if (properties.UserLoginName.ToLower().CompareTo("sharepoint\\system") != 0)
  {
    properties.Cancel = true;
    properties.ErrorMessage = "Some error has occured....";
  }
}

وبالمناسبة، تقوم بإلقاء استثناء إضافي ضمن معالج الأحداث والسبب هو السبب في أنك ترى هذا السلوك الذي تعاني منه.

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