【发布时间】:2012-06-22 11:08:02
【问题描述】:
我有一个多行文本框。我不想让用户输入 HTML 标签 或者验证可以在服务器端完成。有什么建议吗?
当我设置ValidateRequest="true" 时会抛出错误
从客户端检测到潜在危险的 Request.Form 值
这也不是必需的。我尝试通过检查字符 <kanavi and this is not a HTML tag
【问题讨论】:
标签: c# javascript jquery asp.net
我有一个多行文本框。我不想让用户输入 HTML 标签 或者验证可以在服务器端完成。有什么建议吗?
当我设置ValidateRequest="true" 时会抛出错误
从客户端检测到潜在危险的 Request.Form 值
这也不是必需的。我尝试通过检查字符 <kanavi and this is not a HTML tag
【问题讨论】:
标签: c# javascript jquery asp.net
设置ValidateRequest="false"
如果输入显示消息中有标签,则在服务器上处理。
你可以去掉标签
Regex.Replace(source, "<.*?>", string.Empty);
如果你想保留它们,你可以使用编码
【讨论】:
ValidateRequest="false"。
Regex.Replace(source, "<.*?>", string.Empty); 删除文本。我的意思是来源可以是任何东西。
看看这个来自 nuget 的包。HtmlLaundry
它应该可以帮助您在 HTML 到达服务器之前清除它。
【讨论】:
尝试使用正则表达式,这是为了查找 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 个级别。
当然,如果您只想解析 HTML 标签,我认为您必须创建一个字典来存储所有标签并将您的文本框值与每个标签进行比较。
【讨论】:
<Aelios></Aelios>