Um erro ao especificar o intervalo para RangeValidator
-
26-12-2019 - |
Pergunta
Tento especificar o intervalo de 4 a 13.Mas mantém o erro "O MaximumValue 13 não pode ser menor que o mínimo 4 do RangeValidator1". Como posso resolver isso.Aqui está meu código:
<asp:TextBox ID="TextBox2" runat="server" ValidationGroup="Group1"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="TextBox2" ErrorMessage="กรุณากรอก Password" ForeColor="Red"
ValidationGroup="Group1">*</asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="TextBox2"
ErrorMessage="Password ต้องมีความยาวตั้งแต่ 4-13 ตัวอักษร" ForeColor="Red"
MaximumValue="13" MinimumValue="4" Type="String" EnableClientScript="false">*</asp:RangeValidator>
Este é o código no botão:
protected void Button2_Click1(object sender, EventArgs e)
{
try
{
if (Page.IsValid)
{
}
else
{
Insert();
}
}
catch (Exception ex)
{
}
}
Qualquer ajuda será apreciada.
Solução
RangeValidator valida o valor do controle, não o comprimento do valor.Para comparação de strings, "13" é menor que "4", então você está recebendo o erro "max < min".
Você deve usar RegularExpressionValidator para verificar o comprimento da entrada:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="TextBox2"
ErrorMessage="Password ต้องมีความยาวตั้งแต่ 4-13 ตัวอักษร" ForeColor="Red"
ValidationExpression="^.{4,13}$" ValidationGroup="Group1" EnableClientScript="false">*</asp:RegularExpressionValidator>
Outras dicas
Defina o tipo Integer
quando você estiver usando RangeValidator para valores de tipo inteiro.
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="TextBox2"
ErrorMessage="Password ต้องมีความยาวตั้งแต่ 4-13 ตัวอักษร" ForeColor="Red"
MaximumValue="13" MinimumValue="4" Type="Integer" EnableClientScript="false">*</asp:RangeValidator>
Mas estou surpreso que você esteja usando o campo RangeValidator com senha.Neste caso você está restringindo o usuário a colocar valor entre 4-13
.Você provavelmente deseja verificar o comprimento da entrada.Para isso você usa o validador de Expressão Regular.
<asp:RegularExpressionValidator ID="RegexVal" ValidationExpression="^.{4,13}$" runat="server" ErrorMessage="Password must be 4-13 character long" ControlToValidate="TextBox2" />
O tipo de dados especificado que você irá verificar atualmente está definido como string."4" é maior que "13", é por isso que você recebe esse erro.Altere o argumento Type no controle para Integer e deve funcionar.
O tipo deve ser Integer em vez de String
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="TextBox2"
ErrorMessage="Password ต้องมีความยาวตั้งแต่ 4-13 ตัวอักษร" ForeColor="Red"
MaximumValue="13" MinimumValue="4" Type="Integer" EnableClientScript="false">*
</asp:RangeValidator>
O Google traduziu a mensagem de erro abaixo.A senha deve consistir de 4 a 13 caracteres.
Resposta de PashaPash https://stackoverflow.com/a/21060857/263003 é o correto