是的,ContentType 具有所有字段的 FieldRef(嗯,不是继承的字段)。但是我读到,在 schema.xml 中定义内容类型时,您还必须显式定义 Field http://blogs.msdn.com/mcsnoiwb/archive/2008/12/01/creating-list-definitions-with-content-types.aspx(这很奇怪)但是如果您以编程方式添加内容类型,那么它会正确地将 C 类型字段添加到定义中.
顺便说一句,您看到的是 VSeWSS(VS 的微软扩展)工具生成的内容(所有参考文献)。
完全来自 SharePoint 博客 http://blogs.msdn.com/mcsnoiwb/archive/2008/12/01/creating-list-definitions-with-content-types.aspx:
您需要做的是添加
完全相同的元素
内容中的元素
类型,包括相同的 ID。这是一个
有点奇怪,但事实上你需要
定义字段两次,都在
内容类型和 schema.xml 中
使这项工作成功。您可以跳过
集团和其他一些属性。
但是,如果我不使用 Fields,我会得到一个异常:
[COMException (0x80004005): Nevar pabeigt šo darbību.
Lūdzu, mēģiniet vēlreiz.]
Microsoft.SharePoint.Library.SPRequestInternalClass.GetViewsSchemaXml(String bstrUrl, String bstrListName, Boolean bFullBlown, ISP2DSafeArrayWriter p2DWriter, Int32& plDefaultViewIndex) +0
Microsoft.SharePoint.Library.SPRequest.GetViewsSchemaXml(String bstrUrl, String bstrListName, Boolean bFullBlown, ISP2DSafeArrayWriter p2DWriter, Int32& plDefaultViewIndex) +122
哦,好吧,无论如何,我在某处读到一篇文章(再也找不到那篇文章了),建议使用功能接收器添加内容类型,然后它会正确显示表单中的字段。