2009-07-09 59 views
0

我们需要停止复制少量字符的粘贴,例如'<'或'>'或任何可能具有潜在危险的字符。ASP.NET文本框 - 避免复制少量字符的粘贴

我知道我们可以将属性RequestValidation设置为false,但出于某种原因我们不想这样做。

我们想要做的是,当用户尝试在文本框中粘贴文本时,我们要验证文本并与定义的过滤器字符列表进行模式匹配。

我们尝试了各种文本框事件,如OnPaste(在IE以及Mozilla中工作,但在Mozilla中我们无法从剪贴板获取内容),OnBlur(工作正常,但在单击runat复选框时不起作用作为服务器)和其他几个没有真正的进展。

如果你们中的任何一个人能够帮助我,并尽快帮助我,我们将在最后期限内提供帮助!

非常感谢, 阿图尔

回答

4

首先,你真的不应该访问用户的剪贴板,即使IE浏览器的某些版本允许它。出于诚信的原因,浏览器根本就不应该处理这些事情。无论哪种方式,您都可以在粘贴后检查文本框的值,而不是在粘贴过程中检查剪贴板内容。

但是,更好的做法可能是在提交时执行此验证。尝试使用内置的正则表达式验证器。因为真的,你担心用户提交危险字符,对,而不是他们实际上粘贴他们?

EDIT(例如)

<asp:TextBox ID="txtName" runat="server"/> 
<asp:RegularExpressionValidator ID="regexpName" runat="server"  
    ErrorMessage="This expression does not validate." 
    ControlToValidate="txtName" Display="Dynamic" 
    ValidationExpression="^[^<>]$" /> 
+0

谢谢d。 我们尝试了这种方式,并且在大多数情况下这可以正常工作。这里只有问题。只是想要看看我们是否可以比我想象的更优雅地处理这件事。 当用户粘贴危险的角色,并点击其他控件导致后贴,复选框,提交请求标识字符并暂停回发。但复选框的值被改变。下拉菜单也是如此。我正在考虑存储这些值并在重置它们之前暂停提交。有没有更清洁的方法? Thanks, Atul – Atul 2009-07-09 14:18:10

0

你要修改的是在用户粘贴剪贴板之前?为什么不附加一个onchange事件来做你需要的任何验证?你可以把那些你不想要的角色替换掉。