1

我有一个非常奇怪的错误,在我的一个SharePoint场中,当我调用 时SPUtility.CreateNewDiscussionReply(),它会创建一个新项目,其中填充了回复的值,但具有讨论内容类型。但是,如果我从网络回复,它会正确创建一个讨论回复项目。

更新:

更深入地调试我发现 SPUtility.CreateNewDiscussionReply() 将项目内容类型设置为“消息”而不是 ContentTypeId。添加项目时,SharePoint 在查找消息内容类型时遇到问题,并使用列表中找到的第一个内容类型进行解决。

这是我用来测试这个问题的代码:

SPList list = web.Lists["Discussions"];
SPListItem discussion = list.GetItemById(11);

SPListItem reply = SPUtility.CreateNewDiscussionReply(discussion);
// At this point:
//   reply["ContentType"] = "Message"
//   reply["ContentTypeId"] = ""

reply["Body"] = "This is a test reply";

reply.Update();
// At this point:
//   reply["ContentType"] = "Message"
//   reply["ContentTypeId"] = "0x012002...." (Discussion content type)

解决方法: 我发现如果我在更新项目之前手动设置回复的内容类型 ID,则一切正常:

reply["ContentTypeId"] = list.ContentTypes.BestMatch(SPBuiltInContentTypes.Message);
4

1 回答 1

0

讨论内容类型被视为文件夹(继承文件夹内容类型),因此您必须将回复添加到帖子文件夹。

于 2013-01-03T04:20:21.060 回答