我有一個非常疏遠的錯誤,在我的SharePoint一個農場當我打電話SPUtility.CreateNewDiscussionReply()
,它創建充滿答覆的值,但與討論內容類型的新項目。但是,如果我從網上回復,它會正確創建討論回覆項目。SPUtility.CreateNewDiscussionReply創建一個討論議題
更新:
調試越深我發現SPUtility.CreateNewDiscussionReply()設置項的contentType爲 「消息」,但不是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);
但什麼是SPBuiltInContentTypes? (編輯:我看到SP2010中有SPBuiltInContentTypeId類,也許這就是應該在那裏) –