2012-01-11 16 views
13

Mam asp:textbox z obu wymaganych i zakres walidatorami dołączonych do niego, gdzie kod wygląda następująco:asp.net Walidator na pole tekstowe

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

A gdy strona jest dynamicznie załadowany (po szybkim wywołaniu zwrotnym), mam kod, który ma zmienić MaximumValue RangeValidator na bardziej konkretną wartość. Oto kod, który:

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

Teraz mam ustawić punkt przerwania, a rangeValidator1.MaximumValue jest ustawiony prawidłowo, jednak po załadowaniu strony, i patrzę na sporządzoną po stronie klienta javascript, wydaje się, że maksymalna wartość to nadal 1.

To, co bardziej mnie myli, to że wpisana liczba całkowita przejdzie, o ile pierwsza cyfra to "1". Więc jeśli maxValue jest domniemana być coś jak "1234567", "1" będzie pasować, podobnie jak "12345678910". Ale "2" nie będzie. Nie będzie również "3000" ani "46000".

Czy ktoś jeszcze miał podobny problem z RangeValidators na pola tekstowe?

+1

textbox1 nie ma tej samej grupy ValidationGroup, a id to textBox1 (proszę zwrócić uwagę na duże B) Czy to tylko literówka tutaj? –

+1

Ponadto, czy RangeValidator nie ma pola Type? –

+0

w odniesieniu do twojego pierwszego komentarza, przepraszam, to był błąd literowy. Zmieniłem identyfikatory, gdy skopiowałem kod do SO, aby było łatwiej czytać. One * do * pasują do siebie. –

Odpowiedz

19

RangeValidator obsługuje sprawdzanie poprawności dla wielu typów. Powinieneś upewnić się, że ustawiłeś Typ na liczbę całkowitą. lub co jest właściwe.

Powiązane problemy