所以,我有这段代码:
public override void ItemUpdated(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
SPListItem newItem = AMethodWhichGetsANewListItem();
properties.ListItem.ParentList.GetItemById(properties.ListItemId).Delete();
properties.Cancel = true;
properties.InvalidateListItem();
properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
properties.RedirectUrl = newItem.ParentList.DefaultDisplayFormUrl + "=" + newItem.ID;
}
此事件现在在其属性中有一个ListItem,该属性不可用。 在此之后,我无法取消或重定向。
错误日志显示:
`System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. at Microsoft.SharePoint.SPListItemCollection.get_Item(Int32 iIndex) at Microsoft.SharePoint.SPListItem.EnsureItemIsValid()`
添加properties.InvalidateListItem()
没有做任何事情。
ItemUpdated块中的try {} catch不会捕获异常。
我该怎么办?
答案 0 :(得分:0)
我猜你错过了
SPWeb web = properties.Web;
web.AllowUnsafeUpdates = true;
答案 1 :(得分:0)
我已将代码更改为ItemUpdating。在这种覆盖中,一切都很完美。