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>
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top