2009-10-22 91 views
2

是否asp.net有一個內置的機制,可以消毒所有的文本框輸入,而不是重定向到錯誤頁面?asp.net消毒用戶輸入

我有一個文本框輸入用戶可以輸入名稱,但如果他們嘗試輸入和標籤頁自動引發錯誤。我只想以一種用戶友好的方式處理這個錯誤。

回答

2

您可以使用ASP.NET RegularExpressionValidator control與像模式:^[^<>]*$

<asp:RegularExpressionValidator ID="rev" runat="server" 
    ControlToValidate="txtBox" 
    ErrorMessage="The <> tags are not allowed!" 
    ValidationExpression="[^<>]*" /> 
<asp:RequiredFieldValidator ID="rfv" runat="server" ControlToValidate="txtBox" 
    ErrorMessage="Value can't be empty" /> 

RequiredFieldValidator結合使用與的RegularExpressionValidator防止空白項。如果該文本框是可選的,並且只需要在輸入內容時進行驗證,則不必使用RequiredFieldValidator。

這樣做的好處是,可以優雅地處理錯誤,並且可以在同一頁面上通知用戶。

但是,如果您需要爲許多文本框執行此操作,並且您只想提供比錯誤頁面更好的內容,則可以處理ValidateRequest錯誤以提供更友好的消息並使用戶保持在同一頁面上(而不僅僅是將其替換爲自定義錯誤頁面)。有關更多信息,請查看Kirk Evans的帖子:Handling ValidateRequest errors within a Page(請參閱標題爲覆蓋OnError方法的部分)。

3

你會想看看AntiXSS庫那。這是一個DLL,因此很容易就可以使用它並開始使用它。

下載地址爲CodePlex