【问题标题】:Can't use SPItemEventProperties ListItem on ItemAdded in Event Receiver无法在事件接收器中的 ItemAdded 上使用 SPItemEventProperties ListItem
【发布时间】:2012-12-11 09:07:47
【问题描述】:

我正在使用事件接收器来修改 SharePoint 2013 网站中的一些输入。

它们相当简单,这里是一个简单的例子

public override void ItemAdded(SPItemEventProperties properties)
{
    base.ItemAdded(properties);

    using (SPSite site = new SPSite(properties.WebUrl))
    {
        using (SPWeb web = site.OpenWeb(properties.RelativeWebUrl))
        {
            //web.AllowUnsafeUpdates = true;
            SPListItem item = properties.ListItem; // Boom!
            var title = item["Title"].ToString();
            item["Title"] = title.Replace(" ", "_");

            //item.Update();
            //item.SystemUpdate(false);
        }
    }
}

这会导致错误

Message:
    Method not found: 'Microsoft.BusinessData.Runtime.IEntityInstance Microsoft.BusinessData.Runtime.NotificationParser.GetChangedEntityInstance(Microsoft.BusinessData.MetadataModel.IEntity, Microsoft.BusinessData.MetadataModel.ILobSystemInstance)'.

Source:
    Microsoft.SharePoint

StackTrace:
   at Microsoft.SharePoint.SPItemEventProperties.get_ListItem()
   at eventreceivers.Kundregister.PrivateCustomer.PrivateCustomer.<>c__DisplayClass2.<ItemAdded>b__0()
   at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass5.<RunWithElevatedPrivileges>b__3()
   at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)

我已确保这些方法在类中可用。

非常感谢任何建议,谢谢!

【问题讨论】:

    标签: event-receiver sharepoint-2013


    【解决方案1】:

    我已经面临同样的问题了。

    而不是使用

    SPListItem item = properties.ListItem; 
    

    使用以下代码获取项目,

    SPListItem item = properties.Web.Lists.TryGetList(properties.ListTitle).GetItemById(properties.ListItemId);
    

    一切顺利!

    问候, 普拉文·辛格

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多