0

我有一个Multiline Textbox. 我不想让用户类型HTML Tags或验证可以在服务器端完成。有什么建议么?

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

从客户端检测到具有潜在危险的 Request.Form 值

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

4

3 回答 3

1

ValidateRequest="false"

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

你可以删除标签

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

或者,如果要保留它们,则使用编码

于 2012-06-22T11:13:19.997 回答
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 个级别。

当然,如果您只想解析 HTML 标签,我认为您必须创建一个 Dictionary 来存储所有标签并将您的文本框值与每个标签进行比较。

于 2012-06-22T11:12:25.167 回答
0

看看 nuget 的这个包。Html洗衣店

它应该可以帮助您在 HTML 到达服务器之前清除它。

于 2012-06-22T11:20:54.403 回答