如何限制多行文本框中的HTML标记?

时间:2012-06-22 11:08:03

标签: c# javascript jquery asp.net

我有 多行文字框 。我不想让用户输入 HTML标签 ,或者可以在服务器端进行验证。有什么建议吗?

当我设置ValidateRequest="true"时,它会抛出错误

从客户端检测到

潜在危险的Request.Form值

这也不是必需的。我试图通过检查字符&lt;来进行验证。但这也不是一个正确的验证,因为您可以键入<kanavi and this is not a HTML tag

3 个答案:

答案 0 :(得分:1)

设置ValidateRequest="false"

如果输入显示消息中有标记,则在服务器上处理。

你可以删除标签

 Regex.Replace(source, "<.*?>", string.Empty);

如果你想保留编码,你可以使用编码

答案 1 :(得分:0)

尝试使用正则表达式,这是用于查找html标记。在应用程序端使用它。

Regex.Match(TextBox.Text, "</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/ >");

我有另一个解决方案,XDocument总是在应用程序端。

创建一个XDocument并为其设置一个根目录:

XDocument yourXDocument = new XDocument(new XElement("Root"));

然后加载内容:

yourXDocument.Root = XDocument.Load(TextBox.Text);

然后使用递归函数查找XDocument中是否超过2个级别。

对于Couse,如果你只想解析HTML标签,我认为你必须创建一个字典来存储所有这些标签,并将你的文本框值与它们进行比较。

答案 2 :(得分:0)

看看nuget。HtmlLaundry

这个包

它应该可以帮助您在HTML到达服务器之前将其清理干净。