Ho una pagina ASP.NET piuttosto semplice con alcuni campi di input e validatori. Un campo accettando una doppia simile a questa:ASP.NET RangeValidator stranezza con MaximumValue
<asp:TextBox ID="tbHeight" runat="server" />
<asp:RangeValidator ID="vdHeight" runat="server"
ErrorMessage="Height must be a positive number" Text="*"
ControlToValidate="tbHeight" MinimumValue="0" Type="Double" />
Questo funziona come previsto, e l'utente deve inserire un numero> = 0.
Update: questo non funziona come previsto dopotutto (qualche strano bug nel progetto). Vedere i commenti alle risposte sotto per i dettagli
Allora provo lo stesso per un campo di accettare un numero intero:
<asp:TextBox ID="tbGrossTonnage" runat="server" />
<asp:RangeValidator ID="vdGrossTonnage" runat="server"
ErrorMessage="Gross Tonnage must be a positive whole number" Text="*"
ControlToValidate="tbGrossTonnage" MinimumValue="0" Type="Integer" />
Quando si carica l'ASP-page, questo mi dà il seguente errore: Il valore ' 'della proprietà MaximumValue di' vdGrossTonnage 'non può essere convertito in tipo' Integer '.
non ho alcun requisito specifico valore massimo nel sistema, quindi vorrei solo per "default" per Int32.MaxValue
(anche se avrei dovuto entrare 2,147,483,647, dal momento che MaximumValue
non sembra accettare la Int32.MaxValue
costante).
Perché è che un RangeValidator
del tipo Integer
non accetterà una MaximumValue
proprietà mancante, ma per una di tipo Double
questo è ok?
Solo un piccolo follow-up: nel caso in cui tralascio 'MaximumValue' per il doppio tipo, questo significherebbe davvero che sia il minimo che il massimo sono 0. Perché allora la mia pagina convalida correttamente il campo (-1 non è valido e 1 è valido (ho ricontrollato e funziona davvero))? – Nailuj
@Nailuj Non posso confermare la tua scoperta che la pagina si convalida correttamente con "1" come input. Se rilascio i controlli (dal primo frammento sopra) su una nuova pagina in un progetto di sito Web vuoto, inserendo "1" e quindi causando il postback (ho aggiunto un pulsante) * fa * causa un errore di convalida. –
Non convalida correttamente. –