2009-07-09 103 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事件來做你需要的任何驗證?你可以把那些你不想要的角色替換掉。