Sharepoint 检测MOSS2007中的自定义文件夹内容类型

Sharepoint 检测MOSS2007中的自定义文件夹内容类型,sharepoint,content-type,Sharepoint,Content Type,给定一个表示文件夹的SPListItem,我需要确定它是具有内置文件夹内容类型,还是具有自定义文件夹内容类型(带有附加字段) 我就是这么做的 SPContentType folderType = aFolderItem.Web.AvailableContentTypes[SPBuiltInContentTypeId.Folder]; SPContentType contentType = aFolderItem.ContentType; if ( contentType

给定一个表示文件夹的SPListItem,我需要确定它是具有内置文件夹内容类型,还是具有自定义文件夹内容类型(带有附加字段)

我就是这么做的

    SPContentType folderType = aFolderItem.Web.AvailableContentTypes[SPBuiltInContentTypeId.Folder];
    SPContentType contentType = aFolderItem.ContentType;

    if ( contentType != folderType )
       ...
但是,对于默认文件夹,我仍然获得与内置类型不同的内容类型。它们的ID类似于0x0120007C34D9760794FA43AB267F4E1A1BF460。我不确定这个特定的GUID后缀来自哪里,在my\features文件夹的任何定义中都找不到它


我最好的猜测是,实例化的文件夹总是获得自定义类型。如果是这样的话,有没有关于如何区分内置文件夹和自定义文件夹的建议

如果将内容类型附加到列表,则不会直接附加该内容类型,而是创建并附加其副本。原始内容类型id随后会附加一个Guid,并成为“新”内容类型的id

如果保持为,则自定义文件夹内容类型id应类似于
0x0120+00+

因此,如果检查项目的内容类型是默认文件夹还是自定义文件夹,自定义文件夹的id将类似于
0x0120+00+
==>基本文件夹内容类型id+用于将其附加到列表的Guid

与此相反,自定义文件夹的id看起来类似于基本文件夹内容类型+自定义内容类型的Guid+将其附加到列表的Guid


为了使比较更容易一些,您不应该比较实际内容类型的id,而应该查看内容类型id。对于自定义文件夹,父id为
0x0120
,对于自定义文件夹,父id为
0x0120+00+

假设aFolderItemSPListItem类型的变量,下面的代码应该会得到您想要的

if(aFolderItem.ContentType.Id.IsChildOf(SPBuiltInContentTypeId.Folder))
          ...this is a Folder
else
          ...this is not a Folder

同意,但我想看看内置文件夹和自定义文件夹之间的区别。两者都肯定是SPBuiltInContentTypeId.Folder的子级。不是一个直系子女,而是一个后代。啊哈,谢谢你确认这就是事情的运作方式。现在,我想了更多,它实际上有点明显(看看列表内容类型如何具有独立于父站点内容类型的自定义)。您关于如何检测(应用)内置文件夹的建议应该非常有用。杰出的