我有一个多行文本框,需要限制用户添加 html 输入、任何其他脚本、从 word 或任何其他文字处理程序复制粘贴。但我需要允许输入项目符号。
我认为这将是一件简单的事情,因为它看起来像一个常见问题。但是我在网上找不到好的解决方案,请帮忙。我也在使用 Telerik 工具包。
如果您需要去除 HTML,那么HTML Agility Pack是您的朋友。它将处理各种格式错误的 html。作为奖励,它已经包含在 Sitecore 中。
如果您想使用语法更友好的东西,请考虑CSQuery或Fizzler,它们都为您提供 C# 中的 jQuery 类型语法。
如果您需要建立白名单,请查看这篇关于如何添加白名单的帖子:
public void RemoveNotInWhiteList(HtmlNode pNode, IEnumerable<string> pWhiteList)
{
if (!pWhiteList.Contains(pNode.Name))
{
pNode.Remove();
return;
}
pNode.Attributes
.Where(att => !pWhiteList.Contains(att.Name))
.ToList()
.ForEach(att => att.Remove());
pNode.ChildNodes
.ToList()
.ForEach(att => RemoveNotInWhiteList(att, pWhiteList));
}
你可以创建一个验证规则,我认为(在/sitecore/System/Settings/Validation Rules
)。验证通过该白名单运行时,将允许的 HTML 放入某处的白名单中(可能是 Sitecore 项目)。如果其中出现任何其他 HTML 标记,则使其无效。
这不会阻止他们将其放入,但会阻止该项目的发布。
您甚至可以创建一个自定义item:saved
事件处理程序,将所有 HTML 标记从白名单中剔除。同样,它不会阻止他们放入 HTML 标记,但一旦保存该项目,它将被删除。
比这更进一步,我认为也可以为此使用规则引擎 - John West 的这篇文章展示了如何使用规则引擎来修改项目名称,但您可以修改它以读出特定文本盒子。
此处的任何选项都不会阻止用户输入 HTML,但 HTML 标记将在保存项目时自动删除。