0

我有一个多行文本框,需要限制用户添加 html 输入、任何其他脚本、从 word 或任何其他文字处理程序复制粘贴。但我需要允许输入项目符号。

我认为这将是一件简单的事情,因为它看起来像一个常见问题。但是我在网上找不到好的解决方案,请帮忙。我也在使用 Telerik 工具包。

4

2 回答 2

4

如果您需要去除 HTML,那么HTML Agility Pack是您的朋友。它将处理各种格式错误的 html。作为奖励,它已经包含在 Sitecore 中。

如果您想使用语法更友好的东西,请考虑CSQueryFizzler,它们都为您提供 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));
}
于 2013-05-02T13:41:35.477 回答
1

你可以创建一个验证规则,我认为(在/sitecore/System/Settings/Validation Rules)。验证通过该白名单运行时,将允许的 HTML 放入某处的白名单中(可能是 Sitecore 项目)。如果其中出现任何其他 HTML 标记,则使其无效。

这不会阻止他们将其放入,但会阻止该项目的发布。

您甚至可以创建一个自定义item:saved事件处理程序,将所有 HTML 标记从白名单中剔除。同样,它不会阻止他们放入 HTML 标记,但一旦保存该项目,它将被删除。
比这更进一步,我认为也可以为此使用规则引擎 - John West 的这篇文章展示了如何使用规则引擎来修改项目名称,但您可以修改它以读出特定文本盒子。

此处的任何选项都不会阻止用户输入 HTML,但 HTML 标记将在保存项目时自动删除。

于 2013-05-02T08:35:17.727 回答