2011-06-21 15 views
3

我想驗證TextBox中字符串的長度。頁面上的控件定義如下:RangeValidator無法計數?

<asp:TextBox runat="server" ID="TB" /> 
<asp:RangeValidator runat="server" ID="RV" 
MinimumValue="3" MaximumValue="20" 
ControlToValidate="TB" Type="String" /> 

但是頁面運行時有運行發生時錯誤

的MaximumValue 20不能比MinimumValue 3

+0

'RangeValidator'用於驗證數字的範圍,而不是在字符串的長度的範圍內。 – Oded

回答

12

你提到種類較少 incorrect,應該是Type="Integer"而不是Type="String"

+0

會改變類型爲整數,幫助用戶驗證字符串的長度? –

+0

謝謝穆罕默德。我有類似的問題。我已經爲整數值定義了rangevalidator,但我沒有指定Type屬性。我注意到有幾次,如果gridviewrow中的文本框的rangevalidator從1到10,驗證程序只接受1和10個值。我認爲驗證器使用字符串類型,如果沒有指定。 –

+2

此答案與問題不符。指定'Type =「Integer」'不會導致'RangeValidator'驗證'Text'屬性的長度。它只會導致字符串被解析爲一個整數。 – jsumrall

3

您無法使用RangeValidator驗證TextBox的長度! RangeValidator用於驗證字段的值,而不是此值的長度。

要做到這一點,您可以使用其他方式,如CustomValidator

4

只要使用TextBox的MaxLength propery。這用於獲取/設置文本框中允許的最大字符數。

對於最小長度,您需要使用CustomValidator。在那個調用一個js函數來檢查字符串的長度。

嘗試這種情況:

<asp:TextBox runat="server" ID="TB" />  
<asp:CustomValidator runat="server" ID="CustomValidator1" ControlToValidate="TB" 
    Text="The text length should be between 3 and 20" 
    ClientValidationFunction="clientValidate" Display="Dynamic"> 
</asp:CustomValidator> 


<script type="text/javascript"> 
function clientValidate(sender, args) { 
    if (args.Value.length < 3 ||args.Value.length > 20) { 
     args.IsValid = false; 
    } 
}