Sharepoint 2010 发布网络控件:RichHtmlField渲染不工作

Sharepoint 2010 发布网络控件:RichHtmlField渲染不工作,sharepoint-2010,Sharepoint 2010,我使用站点内容类型richtmlfield作为值为hello的完整HTML类型 PublishingWebControl:layoutpage中的RichHtmlField标记不呈现它 而不是显示hello。它正在显示html标记 任何帮助都将不胜感激 谢谢这是因为放在RichHtmlField中的字段是文本类型,而不是HTML 如果您具有正确的内容类型,则需要执行以下操作,以便从schema.xml更新列表实例 首先删除该内容类型的任何页面,转到页面列表并删除该内容类型的每一列,然后删除该内容

我使用站点内容类型richtmlfield作为值为hello的完整HTML类型 PublishingWebControl:layoutpage中的RichHtmlField标记不呈现它

而不是显示hello。它正在显示html标记

任何帮助都将不胜感激


谢谢

这是因为放在RichHtmlField中的字段是文本类型,而不是HTML

如果您具有正确的内容类型,则需要执行以下操作,以便从schema.xml更新列表实例

首先删除该内容类型的任何页面,转到页面列表并删除该内容类型的每一列,然后删除该内容类型。进入“网站设置”,然后选择“网站内容类型”并将其删除。对列执行相同的操作。转到“网站设置”,然后删除内容类型中的每一列(尽管它们应该已经丢失)


这是因为当您从内容类型创建网站时,它会采用Schema.xml来描述内容类型的格式,然后对其进行实例化并将其提供给页面,因此,如果更新了Schema,该页面尚未启动。

我在寻找完全相同问题的解决方案时发现了这篇文章,我想我找到了答案

在我的场景中,我的页面上有多个RichHtmlFields,其中一个显示正确,而另一个显示不正确。当我通过powershell查看字段时,我注意到SchemaXML中的一个差异,工作字段具有以下附加属性:

 RichText="True"
 RichTextMode="FullHtml"
我编写了一个快速的powershell脚本来更新“问题”字段,然后问题就消失了(请查看下面的脚本)。更改必须在列表级别进行,才能对现有页面/列表产生影响,但我相信在根站点(或正确的子站点)对列进行修改也会起作用

 $web = $site.OpenWeb($site.RootWeb.ID)
 $list = $web.Lists["Pages"]
 [Microsoft.SharePoint.Publishing.Fields.HtmlField]$field =   [Microsoft.SharePoint.Publishing.Fields.HtmlField]$list.Fields.GetFieldByInternalName("Abst     ract")
 $field.RichText = $true
 $field.RichTextMode = [Microsoft.SharePoint.SPRichTextMode]::FullHtml
 $field.Update()
 $list.Update()

RichHtmlField属于HTML类型。它不是文本