我有一个关于内容类型及其ID以及如何将它们与对象模型一起使用的问题.
首先,我定义了一些站点列,使用这些列的内容类型以及通过CAML使用此内容类型的列表定义.三个组件中的每一个都被实现为特征.另一个功能是创建此列表定义的列表实例.
因此,当我尝试使用我的内容类型向列表中添加新项时,我使用以下代码.
SPListItem listItem = list.Items.Add(); SPContentType type = list.ContentTypes[new ContentTypeId("0x010044fb4458c2eb4800825910845a35554c")]; listItem["ContentTypeId"] = type.Id; listItem["Title"] = "Titel"; listItem.Update();
当我执行这段代码时,类型对象仍为null,我也确定内容类型附加到列表中.调试代码并检查列表的内容类型向我显示附加到列表的内容类型没有我在内容类型定义(CAML)中定义的id.列表实例中的id不同,但是从我在内容类型定义中定义的id开始. 0x010044FB4458C2EB4800825910845A35554C 0077D683BDD9969F4E920A27C334463321
这种行为正常吗?我希望附加到列表的内容类型具有与定义中相同的ID.
我的主要目标是避免使用内容类型的名称从列表的内容类型中检索它,但要使用唯一的ID.
再见弗洛
基于内容类型创建列表时,列表的每个实例实际上都是从父级继承的新内容类型.
看看这个...... http://soerennielsen.wordpress.com/2007/09/11/propagate-site-content-types-to-list-content-types/
更新 - 关于在不使用名称的情况下查找列表实例,请同时查看SPContentTypeUsage类!