2012-01-11 64 views
13

我有一个连接到它要求两者和范围验证,其中代码看起来像这样的asp:textboxasp.net范围验证的文本框

ASP:

<asp:TextBox ID="textBox1" runat="server" CausesValidation="true"></asp:TextBox> 
<asp:RangeValidator ID="rangeValidator1" runat="server" ControlToValidate="textBox1" MaximumValue="1" MinimumValue="0" 
    ValidationGroup="valid" ForeColor="Red" ErrorMessage="Out of Range" /> 
<asp:RequiredFieldValidator ID="requiredValidator1" runat="server" ControlToValidate="textBox1" 
    ValidationGroup="valid" ForeColor="Red" ErrorMessage="Cannot be blank" /> 

而当页面动态加载(快速回调后),我有代码应该将RangeValidator的MaximumValue更改为更具体的值。下面是该代码:

rangeValidator1.MaximumValue = GetMaxValue(params).ToString(); 

现在,我已经设置断点,rangeValidator1.MaximumValue被正确设定,但是,在页面加载的时候,我期待在编译客户端的JavaScript,它看来,最大值仍然只有1.

更令我困惑的是,只要第一个数字是'1',任何输入的整数都会通过。因此,如果maxValue为假定为“1234567”,则“1”将与“12345678910”匹配。但“2”不会。也不会“3000”或“46000”。

其他人有没有与文本框上的RangeValidators类似的问题?

+1

textbox1看起来不在同一个ValidationGroup中,而id是textBox1(注意大写字母B)这只是一个错字吗? – 2012-01-11 20:50:21

+1

另外,RangeValidator没有Type字段吗? – 2012-01-11 20:51:28

+0

关于您的第一条评论,很抱歉,那是一个错字。当我将代码复制到SO时,我更改了ID,以便更易于阅读。他们*做*匹配。 – 2012-01-11 20:59:48

回答

19

RangeValidator处理多种类型的验证。你应该确保将Type设置为Integer。或者什么是合适的。