EventReceiver无法正常工作

时间:2013-12-19 12:42:05

标签: c# sharepoint sharepoint-2010 eventreceiver

我的 SharePoint 应用程序中有一个EventReceiver,其中我覆盖了ItemAddingItemUpdating方法:

public override void ItemAdding(SPItemEventProperties properties)
{
   SPWeb web = properties.OpenWeb();

   switch (properties.ListTitle)
   {
        //some cases

        case "Employees":
            if (properties.AfterProperties["User"] != null)
            {
               SPUser user = web.SiteUsers
               [
                   properties.AfterProperties["User"].ToString().Substring
                   (
                        properties.AfterProperties["User"].ToString().IndexOf(";#") + 2
                    )
               ];

               properties.AfterProperties["Title"] = user.Name;
            }
            break;
   }

   base.ItemAdding(properties);
}

两种方法中的代码完全相同。但是,在将项目添加到列表后,有时 标题字段仍为空。如果我更新该项目(没有任何更改)标题字段已正确填写用户名。

1 个答案:

答案 0 :(得分:1)

我在您的代码中看到两个潜在问题:

  1. 通过解析处理属性.AfterProperties [“User”]。最好使用这样的代码(SPUserFieldValue)properties.ListItem.Fields [“User”]。GetFieldValue(properties.properties.AfterProperties [“User”]。ToString())。这种方式由MSDN建议。
  2. 使用SiteUsers索引器会在集合中找不到用户时抛出异常。你应该通过try ... catch语句来包装它。第一次在网站集中使用用户时可能会发生这种情况。