如何从文本框中删除html和单词格式的文本

时间:2013-05-02 04:51:33

标签: asp.net telerik sitecore

我有一个多行文本框,需要限制用户添加html输入,任何其他脚本,从word或任何其他文字处理器复制粘贴。 但是我需要允许输入子弹。

我认为这样做很简单,因为它看起来像是一个常见的问题。 但我无法在网上找到一个好的解决方案,请帮忙。 我也在使用telerik工具包。

2 个答案:

答案 0 :(得分:4)

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

如果你想使用更友好的语法,那么考虑CSQueryFizzler,它们都会在C#中为你提供jQuery类型的语法。

如果您需要构建白名单,请查看this post on how to add whitelist

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));
}

答案 1 :(得分:1)

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

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

您甚至可以创建一个自定义item:saved事件处理程序,除了列入白名单的内容之外,它还会删除所有HTML标记。同样,它不会阻止他们放入HTML标记,但是一旦项目被保存,它将被删除。
更进一步,我认为也可以使用规则引擎 - this article by John West显示如何使用规则引擎修改项目名称,但您可以将其修改为读出特定的文本框。

这里的任何一个选项都不会阻止用户输入HTML,但保存项目时会自动删除HTML标记。

相关问题