我有 多行文字框 。我不想让用户输入 HTML标签 ,或者可以在服务器端进行验证。有什么建议吗?
当我设置ValidateRequest="true"
时,它会抛出错误
潜在危险的Request.Form值
这也不是必需的。我试图通过检查字符&lt;来进行验证。但这也不是一个正确的验证,因为您可以键入<kanavi and this is not a HTML tag
答案 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到达服务器之前将其清理干净。