2012-01-11 34 views
13

Tôi có một asp:textbox với cả hai xác nhận yêu cầu và phạm vi gắn liền với nó, nơi mã trông như thế này:asp.net trên textbox

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" /> 

Và khi trang được động nạp (sau khi gọi lại nhanh), tôi có mã được cho là thay đổi MaximumValue của RangeValidator thành giá trị cụ thể hơn. Dưới đây là mã cho rằng:

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

Bây giờ, tôi đã thiết lập một breakpoint và rangeValidator1.MaximumValue đang được thiết lập một cách chính xác, tuy nhiên, khi tải trang, và tôi nhìn vào mặt khách hàng javascript biên soạn, có vẻ như giá trị tối đa vẫn chỉ 1.

Điều làm tôi bối rối hơn là bất kỳ số nguyên nào được nhập sẽ vượt qua, miễn là chữ số đầu tiên là '1'. Vì vậy, nếu maxValue là , nghĩa là là một cái gì đó như "1234567", "1" sẽ khớp, như "12345678910". Nhưng "2" thì không. Cũng sẽ không "3000" hoặc "46000".

Có ai khác có vấn đề tương tự với RangeValidators trên hộp văn bản không?

+1

textbox1 không xuất hiện trong cùng một ValidationGroup và id là textBox1 (lưu ý vốn B) Có phải đó chỉ là lỗi đánh máy ở đây không? –

+1

Ngoài ra, không RangeValidator có một trường loại? –

+0

liên quan đến nhận xét đầu tiên của bạn, xin lỗi, đó là lỗi đánh máy. Tôi đã thay đổi các id khi tôi sao chép mã trên SO để nó dễ đọc hơn. Họ * làm * phù hợp. –

Trả lời

19

RangeValidator xử lý xác thực cho nhiều loại. Bạn nên đảm bảo đặt Type thành Integer. hoặc cái gì là phù hợp.

Các vấn đề liên quan