API do cliente
Há uma pequena API que pode ser usada no cliente para obter vários efeitos no seu próprio código de cliente. Como alguma rotina não pode ser oculta, em teoria, você pode usar o cliente para verificar todas as variáveis, características e funções definidas pelo cliente. No entanto, muitos deles podem ser alterados. A seguir, resume o objeto do cliente que o incentivamos a usar.
Tabela 3. Objeto do cliente
Nome Tipo Descrição
Page_isValid Boolean Variable apontou se a página é atualmente válida. Verificar os scripts sempre mantenha a variável mais recente.
Page_Validator Element Array Esta é uma matriz que contém todas as verificações na página.
Page_ValidationActive Variáveis booleanas indicam se devem ser verificadas. Defina essa variável como false pode ser comprovada pela programação.
IsValid Boolen Atributos Cada dispositivo de verificação do cliente possui a propriedade, apontando se o dispositivo de verificação é atualmente válido. Observe que, na versão PDC, esse atributo é misturado com IsValid.
Ignorando a verificação do cliente
Uma tarefa que você geralmente precisa executar é adicionar o botão "Cancelar" ou o botão de navegação na página. Nesse caso, mesmo que haja erros na página, você também pode usar o botão para enviar a página. Como o botão do cliente OnClick Ocorre antes do evento Onsubmit do formulário, ele pode evitar o envio de inspeção e a verificação. A seguir, mostra como usar o controle de imagem HTML como o botão "Cancelar" para concluir a tarefa:
<Tipo de entrada = imagem Runat = servidor
Valor = cancelar
OnClick = Page_ValidationActive = false;
OnServerclight = cmdcancel_click>
Use o botão ou o Controle do Button para executar alguma confusão, porque o evento OnClick assume que é um evento de servidor com o mesmo nome. Você deve definir este evento no script do cliente:
<ASP: ImageButton Runat = ID do servidor = CMDIMGCANCEL
alternateText = Cancelar
OnClick = cmdcancel_click/>
<idioma de script = javascript>
document.all [cmdimgcancel] .onclick =
nova função (page_validationActive = false;);
</script>
Outro método para resolver esse problema é definir algumas configurações do botão "Cancelar" para que não acione o evento de envio no script do cliente ao retornar. Os controles htmlinputbutton e linkbutton são os exemplos.
Efeito especial
Outro requisito comum é que, além das informações de erro exibidas pelo próprio dispositivo de verificação, alguns outros efeitos sejam necessários. Nesse caso, qualquer modificação que você faça precisa ser realizada ao mesmo tempo no servidor ou cliente. Suponha que você precise adicionar um rótulo para alterar a cor de acordo com a entrada de entrada. A seguir, é como implementar esta tarefa no servidor:
Classe pública ChanGecolorpage: Página {
Public Label Lblzip;
Valor público de regulamento regulaxpressivo;
Substituição protegida void sobreoad (EventArgs e) {{
lblzip.forecolor = valzip.isvalid?
}
}
Todos os métodos acima são perfeitos, mas, desde que você modifique a verificação acima, você descobrirá que, a menos que execute a mesma operação no cliente, ela parecerá muito inconsistente. A estrutura de verificação permitirá que você evite muitos efeitos duplos, mas não pode evitar outros efeitos que você deve alcançar ao mesmo tempo no cliente e no servidor. A seguir, é apresentado um fragmento que executa a mesma tarefa no cliente:
<asp: rótulo id = lblzip runat = servidor
texto = código postal:/>
<Asp: textbox id = txtzip runat = servidor
OnChange = TXTZIPONCHANGE ();
<Asp: regularxpressionValididator id = valzip runat = servidor
ControlTovalidate = txtzip
errorMessage = código postal inválido
Validationxpression = [0-9] {5} /> <br>
<idioma de script = javascript>
Função txtziponchange () {{) {
// Se a verificação do cliente não estiver na atividade, ela não executará nenhuma operação
ifOF (page_validators) == indefinido) retornar;
// altere a cor do rótulo
lblzip.style.color = valzip.isvalid?
}
</script>
API do cliente beta 1
Para a edição beta 1, algumas funções que podem ser chamadas do script do cliente causarão outras situações.
Tabela 4. Função da chamada do script do cliente
Descrição do nome
ValidatorValidate (VAL) usa um dispositivo de verificação do cliente como entrada. Faça o dispositivo de verificação verificar sua entrada e atualizar sua tela.
ValidatorEnable (Val, Ativar) Obtenha um dispositivo de verificação do cliente e um valor booleano. Ativar ou desativar o dispositivo de verificação do cliente. Se estiver desativado, o dispositivo de verificação do cliente não será avaliado e o validador do cliente sempre será válido.
O ValidatorHookupControl (Control, Val) obteve um elemento HTML de entrada e um dispositivo de verificação do cliente. Modifique ou crie o evento de mudança do elemento para que o dispositivo de verificação possa ser atualizado durante a alteração. Esta função é adequada para verificações personalizadas com base em vários valores de entrada.
Seu objetivo especial é ativar ou desativar o dispositivo de verificação. Se você deseja verificar se você só entra em vigor em circunstâncias específicas, pode ser necessário alterar o status de ativação ao mesmo tempo no servidor e nos clientes; caso contrário, você descobrirá que o usuário não pode enviar a página.
A seguir, o exemplo acima, mais um campo.
Classe pública condicional: página {
public htmlinputcheckbox chksameas;
Public ResearchFieldValidator RfvalshipAddress;
Substituição protegida void validate () {) {)
BOOL Enableship =!
rfvalshipAddress.enabled = ativação;
base.Validate ();
}
}
A seguir, o código do cliente equivalente:
<Tipo de entrada = Caixa de seleção Runat = ID do servidor = Chksameas
OnClick = Onchangesameas ();> o mesmo que o endereço de pagamento <br>
<idioma de script = javascript>
Função onchangesameas () {
var entleship =! Event.srcement.status;
ValidatorEnable (rfvalshipAddress, ativação);
}
</script>
Regras eficazes e informações úteis de erro
Cada dispositivo de verificação mostra informações de erro específicas sobre condições específicas em controles específicos. Existem algumas regras que confirmam se é válido.
Todas as verificações vazias (exceto o requerirFieldValidator) são consideradas válidas. Se um valor vazio for inválido, você geralmente precisará de um Valorizador Necessário e um outro verificador. Você precisa fazer isso, porque, em geral, sempre deseja mostrar informações de erro diferentes no dispositivo de verificação vazio e na eficácia. Você também pode usar informações pouco claras, como "você deve inserir um valor, e esse valor deve estar entre 1 e 10".
Outras regras especiais usadas quando o campo de entrada não pode ser convertido em um tipo de dados especificado está relacionado ao CompareValidator e RangeValidator. O processo de avaliação de validade do CompareValidator do ControlTocompare especifica o processo de avaliação de validade é o descrito abaixo:
Se o campo de entrada referenciado pelo ControlTovalidate estiver vazio, será eficaz.
Se o campo de entrada referenciado pelo ControlTovalidate não puder ser convertido no tipo de dados necessário, ele será inválido.
Se o campo de entrada referenciado pelo ControlTocompare não puder ser convertido no tipo de dados necessário, ele será válido.
O campo de entrada é convertido para o tipo de dados necessário e se compara.
O terceiro passo parece um pouco inconsistente. A razão para isso é porque, se o dispositivo de verificação verificar a eficácia de vários campos ao mesmo tempo, é difícil escrever informações de erro significativas para o dispositivo de verificação. Um dispositivo de verificação independente deve ser usado para relatar a situação de erro no campo de entrada do ControlTocompare. RangeValidator possui métodos de trabalho semelhantes, com propriedades máximas e mínimas.
Funções de propriedades habilitadas, visíveis e de exibição
A diferença entre as propriedades ativadas, visíveis e de exibição do dispositivo de verificação pode não ser muito óbvia.
Display = nenhum pode ser usado para especificar que o dispositivo de verificação não exibe diretamente nenhum conteúdo, mas ainda avalia, ainda afeta a eficácia geral e ainda pode colocar erros no resumo do cliente e do servidor. Para a verificação do cliente, esses valores estão determinados a usar as características do estilo visível ou usar as características do estilo de exibição para abrir ou fechar o dispositivo de verificação. Para verificação do servidor -lado, exibir = dinâmico significa que a entrada não exibe nenhum conteúdo quando a entrada é válida e o display = estático representa um espaço que não muda (). A última configuração deve ser dobrada em nenhum conteúdo quando a célula que contém apenas o dispositivo de verificação na tabela é válida.
Por que não apenas usar visível = false para tornar o dispositivo de verificação visível? No ASP+, o atributo visível do controle tem muitos significados: o controle de visível = false não será processado ou exibido. É precisamente por esse significado que o visível = false do dispositivo de verificação significa que não apenas não exibe nenhum conteúdo, mas também não pode ser usado. Este dispositivo de verificação não será avaliado, não afetará a validade da página, nem será colocado em resumo.
Ativado é neutro. Na maioria dos casos, o efeito de ativado = false e visível = false é exatamente o mesmo. Na edição beta 1 ou na versão superior, há uma diferença importante: na verificação do cliente, o dispositivo de verificação desativado ainda será enviado ao navegador, mas está em um estado deficiente. Você pode usar a função ValidatorEnable no script do cliente para ativar o dispositivo de verificação.
Ao usar visível ou ativado para controlar se deve verificar, preste atenção ao pedido no servidor acima. Ou altere antes da verificação, ou re -verifique após a alteração. Caso contrário, seus valores isvalid não refletirão alterações nos atributos.
Controle CustomValidator
A maneira mais fácil de estender a estrutura de verificação é usar o controle CustomValidator. Esse controle pode ser usado para executar verificações que outros controles de verificação não podem ser executados, mas também podem executar verificações que precisam acessar informações no servidor (como bancos de dados ou serviços da Web).
Se o CustomValidator com apenas uma função de verificação do servidor for adicionada, você notará que o dispositivo de verificação não participará da verificação do cliente. Quando o usuário alterna entre cada campo com a tecla TAB, o CustomValidator não será atualizado e o servidor redondo -trip precisa executar sua verificação ao mesmo tempo. Se você deseja usar o CustomValidator para executar uma verificação que não requer nenhuma informação no servidor, você também pode usar a propriedade ClientValidationFunction para fazer com que o dispositivo de verificação participe completamente da verificação do cliente. Suponha que você forneça uma Função de Validação do Client. Mas, de fato, é apenas uma parte da verificação. A verificação da função de verificação do cliente não excede a verificação da execução no servidor porque os hackers podem ignorar facilmente a função de verificação.
A seguir, é apresentado um exemplo simples de usar o CustomValidator no cliente e no servidor, verifique apenas se a entrada é uniforme. Vamos apresentar a função do servidor (em C#):
{serviço parcial) {posição
tentar {
int i = int.FromString (valor);
Return ((i % 2) == 0);
} Pegar {
Retornar falso;
}
}
A seguir, é apresentado o método da declaração da função no cliente e uma função de verificação do cliente que executa a mesma verificação. Geralmente, esse é um formulário JScript, mas se seu objetivo é o Microsoft® Internet Explorer, você também pode usar o formulário VBScript®.
<ASP: ID do CustomValidator = CustomVal2 Runat = servidor
ErrorMessage = números não podem ser removidos!
ControlTovalidate = txtCustomData
OnservalidationFunction = ServerValidation
ClientValidationFunction = checkeven /> <br>
Campo de dados: <asp: textbox id = txtcustosdata runat = server />
<idioma de script = javascript>
<!-
Função checkeven (fonte, valor) {{
var valor = parseint (valor, 10);
if (isnan (val))
Retornar falso;
Return ((Val % 2) == 0);
}
//->
</script>
Aqui estão algumas precauções usando o CustomValidator:
Semelhante a todos os outros controles de verificação (exceto o NeceedFieldValidator), se o campo de entrada estiver vazio, considera -se que o CustomValidator é eficaz.
Se o navegador mais antigo for usado ou a verificação do cliente estiver fechada, a função de verificação do cliente não poderá ser chamada. Antes de definir a função, você não precisa verificar a função do navegador usado no navegador, mas precisa garantir que o navegador não cause erros de script devido à definição. Certifique -se de tornar o código do seu cliente como uma anotação do HTML, como mostrado no exemplo a seguir.
Dois parâmetros são passados para a função do seu cliente e correspondem aos parâmetros passados para a função do servidor. O primeiro é o elemento do dispositivo de verificação do cliente e o segundo é o valor de controle especificado pelo ControlTovalidate. No entanto, no cliente, você pode optar por não definir parâmetros para a função, que funcionarão normalmente.
Se você usa versões beta1 ou superior, poderá manter o ControlTovalidate como vazio. Nesse modo, a função do servidor sempre desencadeará uma ida e volta de ida e volta, e a função do cliente sempre será acionada toda vez que você tentar enviá -la. Você pode usar esse recurso para verificar os controles que outros métodos não podem verificar, como botões de caixa de seleção ou botões de rádio separados. Se a condição for baseada em vários controles e você não desejar que o usuário avalie a condição ao alternar entre cada campo na página, você poderá usar esse método.
Outra opção na versão beta 1 ou superior é o evento de mudança de vários controles. O método é adicionar alguns scripts incorporados que chamam o cliente ValidatorHookupControl, conforme descrito acima.
Quais controles podem ser verificados?
Para permitir que o controle seja verificado pela referência de controle, o controle deve ter atributos verificados. Todos os controles verificados possuem propriedades ValidationPropertyAttribute, que indicam o atributo que deve ser lido durante a verificação. Se você escrever seu próprio controle, poderá especificar os atributos a serem usados fornecendo um deles, para que o controle esteja envolvido na verificação.
Para permitir que a verificação seja realizada normalmente no cliente, o atributo deve corresponder às características do valor do elemento HTML exibido pelo cliente. Muitos controles complicados (como Datagrid e Calendário) não valem o cliente e só podem ser verificados no servidor. Portanto, apenas os controles mais próximos dos elementos HTML podem participar da verificação. Além disso, o controle deve ter um único valor lógico no cliente. Portanto, o RadiobuttonList pode ser verificado, mas a lista de seleção não pode.
Fim
A explicação mencionada acima da verificação ASP+ pode ter excedido o conteúdo que você deseja entender. Apreciá-lo!