我有一个Sharepoint列表,其中一列是纯文本 - 描述。编辑列表项时,“描述”字段通常是TextArea。我已经编程了这个TextArea用JavaScript扩展来接受富文本(真的是html),所以我有自定义的富文本字段。问题是,当我输入丰富的数据时,一切看起来都很好但是当我保存已编辑的项目然后显示它时,文本显示为纯文本,而不是html,因此我得到“< b>而不是粗体文本。文字< / b>“。我希望它显示为HTML。我该怎么办?
编辑:我不想使用内置编辑器,因为我需要一些不同的行为。
答案 0 :(得分:2)
从表单中读取文本输入并将其保存到列表中的代码将执行替换<{p>的HTMLEncode操作
< with <
> with >
依此类推(保存后查看页面的来源)
这发生在“服务器端”,因此您将无法使用JavaScript更改此内容。
我认为你有两个选择
如F5所述,您可以使用自己的行为创建custom field type进行渲染和更新。这是“正确”的方法。
您可以更改您的时髦JavaScript以在富文本字段上工作,破解内置RTE的呈现并将其替换为您自己的。
一旦您从用户那里获取输入然后将其渲染回您的网页,您就可以自行打开各种恶意软件,例如Cross Site Scripting,如果您没有过滤掉潜在的不良内容(使用HtmlEncode的原因) - 在Intranet上的典型SharePoint站点中的问题少于面向公众的站点。
答案 1 :(得分:0)
SharePoint使用自己的内置编辑器支持富文本列。您只需更改列设置,以便它允许富文本。
如果您使用JavaScript编辑器是因为浏览器与内置的富文本编辑器兼容,那么SharePoint将始终从输入的内容中删除html,因为它希望输入为纯文本。
重新发表评论
如果您希望字段以富文本格式显示,则需要将其设置为富文本字段,通过将其设置为纯文本,您将始终丢失自定义格式。
您需要查看custom field types
答案 2 :(得分:0)
那么数据的确切显示位置是错误的:列表显示表单还是页面布局?如果它位于页面布局上,修复很容易:创建一个自定义字段控件,它将检索字段的值(如SPContext.Current.ListItem [“YourField”])并解码内容以获取HTML而不是编码的HTML实体。