我有一个Multiline Textbox. 我不想让用户类型HTML Tags或验证可以在服务器端完成。有什么建议么?
当我设置ValidateRequest="true"
它抛出错误
从客户端检测到具有潜在危险的 Request.Form 值
这也不是必需的。我尝试通过检查字符 < 来进行验证,但这也不是正确的验证,因为您可以键入<kanavi and this is not a HTML tag
我有一个Multiline Textbox. 我不想让用户类型HTML Tags或验证可以在服务器端完成。有什么建议么?
当我设置ValidateRequest="true"
它抛出错误
从客户端检测到具有潜在危险的 Request.Form 值
这也不是必需的。我尝试通过检查字符 < 来进行验证,但这也不是正确的验证,因为您可以键入<kanavi and this is not a HTML tag
放ValidateRequest="false"
如果输入显示消息中有标签,则在服务器上处理。
你可以删除标签
Regex.Replace(source, "<.*?>", string.Empty);
或者,如果要保留它们,则使用编码
尝试使用正则表达式,这是为了查找 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 标签,我认为您必须创建一个 Dictionary 来存储所有标签并将您的文本框值与每个标签进行比较。
看看 nuget 的这个包。Html洗衣店
它应该可以帮助您在 HTML 到达服务器之前清除它。