O Range Validator não está funcionando no valor mínimo e máximo do asp.net
-
21-12-2019 - |
Pergunta
eu me candidatei RangeValidator
sobre TextBox
.Mas sempre me mostra erro:Intervalo inválido, embora eu tenha fornecido o valor mínimo 10 e o valor máximo 25.Quero que o usuário não insira um valor cujo comprimento seja menor que 10 e maior que 25.Quero que o usuário possa inserir qualquer coisa, então tenho type="string"
em RangeValidator
.Mas sempre me dá uma mensagem de erro:Intervalo inválido.
<td>
<asp:TextBox ID="tbPassword" runat="server" MaxLength="25" type="password">
</asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPassword" runat="server"
ControlToValidate="tbPassword" ForeColor="red" Display="Dynamic"
ErrorMessage="Password is required." SetFocusOnError="true">
</asp:RequiredFieldValidator>
<asp:RangeValidator ID="rvPassword" ControlToValidate="tbPassword"
ForeColor="red" Display="Dynamic" MinimumValue="10" MaximumValue="25"
SetFocusOnError="true" Type="String" runat="server"
ErrorMessage="Invalid Range">
</asp:RangeValidator>
</td>
Solução
Para isso você precisará usar um CustomValidator
controle conforme sugerido por Emad Mokhtar.
Para validação do lado do servidor, crie um evento como este.
protected void TextValidate(object source, ServerValidateEventArgs e)
{
e.IsValid = (e.Value.Length >= 10 && e.value.Length <= 25);
}
Para validação do lado do cliente, crie uma função javascript como esta.
<script type="text/javascript">
function validateLength(oSrc, args){
args.IsValid = (args.Value.length >= 10 && args.Value.length <= 25);
}
</script>
Então, na sua marcação aspx, tenha o CustomValidator
controle assim.
<asp:Textbox id="tbPassword" runat="server" text=""></asp:Textbox>
<asp:CustomValidator id="customValidator" runat="server"
ControlToValidate = "tbPassword"
OnServerValidate="TextValidate"
ErrorMessage = "Password must be between 10 to 25 characters!"
ClientValidationFunction="validateLength" >
</asp:CustomValidator>
Você pode encontrar mais detalhes aqui.
Outras dicas
Esta validação pode ser implementada usando o controle CustomValidator e aplicar a validação do lado do cliente e do servidor, encontre um exemplo aqui.
Recentemente observei esse recurso interessante, basta usar os atributos abaixo para asp control/html.minLength="10" maxLength="1000"
como os atributos indicam claramente, permite um mínimo de 10 caracteres e um máximo de 1000 caracteres.