【问题标题】:Why should I use fieldLinks when adding fields to a contenttype?为什么在向内容类型添加字段时应该使用 fieldLinks?
【发布时间】:2012-02-19 14:21:43
【问题描述】:

当我搜索有关使用代码 (C#) 创建内容类型的文档时,我总是会找到使用 SPFieldLink 链接到网站现有字段并通过添加此字段的示例

contentType.FieldLinks.Add()

但是也有直接添加字段的方法。是否有充分的理由为什么我不应该简单地使用

添加字段
contentType.Fields.Add(SpField())

?!?

提前致谢

【问题讨论】:

    标签: c# sharepoint sharepoint-2010 content-type


    【解决方案1】:

    我现在发现似乎有一个简单的原因:它只是不适用于 ContentTypes。尝试直接添加字段时,SP2010 向我发送了一个异常:

    此功能不适用于未与列表关联的字段集合。

    我完全没想到会这样(西班牙宗教裁判所也没有),但这似乎是不可能的。

    【讨论】:

      【解决方案2】:

      查看 XML 列表可能会有所帮助。

      这是公告内容类型的 XML:

      <FieldRefs>
          <FieldRef ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Name="Body" />
          <FieldRef ID="{6a09e75b-8d17-4698-94a8-371eda1af1ac}" Name="Expires" />
      </FieldRefs>
      

      这是公告列表的 XML:

      <Fields>
        <Field ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Type="Note" RichText="TRUE" RichTextMode="FullHtml" IsolateStyles="TRUE" NumLines="15" Name="Body" DisplayName="$Resources:core,camlid2;" Sortable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Body">
        </Field>
        <Field ID="{6a09e75b-8d17-4698-94a8-371eda1af1ac}" Type="DateTime" Name="Expires" DisplayName="$Resources:core,camlid3;" Format="DateOnly" FromBaseType="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Expires">
        </Field>
      </Fields>
      

      列表有字段。内容类型具有 FieldRefs。

      我不确定这是否完全正确,但我总是将其描述为类和接口或抽象类之间的区别。内容类型是对列表的定义,但与接口一样,它不包含任何数据或功能。由于字段包含数据和功能,内容类型(从列表中分离)没有字段,它们有 FieldRefs。 YMMV - 但这总能帮助我保持正确。

      【讨论】:

        猜你喜欢
        • 2020-04-15
        • 2010-11-20
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多