API client
Il existe une petite API qui peut être utilisée sur le client pour réaliser divers effets dans votre propre code client. Parce qu'une certaine routine ne peut pas être cachée, en théorie, vous pouvez utiliser le client pour vérifier toutes les variables, caractéristiques et fonctions définies par le client. Cependant, beaucoup d'entre eux peuvent être modifiés. Le suivant résume l'objet client que nous vous encourageons à utiliser.
Tableau 3. Objet client
DESCRIPTION DE TYPE DE NOM
Page_isvalid Boolean Variable a souligné si la page est actuellement valide. La vérification des scripts gardent toujours la variable la dernière.
PAGE_VALIDATOR Élément Array Il s'agit d'un tableau contenant toutes les vérifications de la page.
Page_Validationactive Booléen Les variables indiquent si elle doit être vérifiée. Définissez cette variable sur FALSE peut être vérifiée par programmation.
Isvalid Boolen Attributs Chaque dispositif de vérification client a la propriété, soulignant si le dispositif de vérification est actuellement valide. Veuillez noter que dans la version PDC, cet attribut est mélangé avec Isvalid.
Contourner la vérification du client
Une tâche que vous devez souvent exécuter consiste à ajouter le bouton "Annuler" ou le bouton de navigation sur la page. Dans ce cas, même s'il y a des erreurs sur la page, vous pouvez également utiliser le bouton pour soumettre la page. Étant donné que l'événement Button Client ONClick se produit avant l'événement ONSUMMIT du formulaire, il peut éviter de soumettre l'inspection et de contourner la vérification. Ce qui suit montre comment utiliser le contrôle d'image HTML comme le bouton "Annuler" pour terminer la tâche:
<Type d'entrée = Image Runat = Server
Valeur = annuler
OnClick = page_validationActive = false;
onserverclight = cmdcancel_click>
Utilisez le contrôle du bouton ou de l'imageButton pour exécuter une certaine confusion, car l'événement OnClick suppose qu'il s'agit d'un événement de la peau du serveur avec le même nom. Vous devez définir cet événement dans le script client:
<Asp: ImageButton runat = server id = cmdimgcancel
alternateText = annuler
OnClick = cmdcancel_click />
<Script Language = JavaScript>
document.all [cmdimgcancel] .onclick =
nouvelle fonction (page_validationactive = false;);
</cript>
Une autre méthode pour résoudre ce problème consiste à définir un certain paramètre du bouton "Annuler" afin qu'il ne déclenche pas l'événement de soumission dans le script client lors du retour. Les contrôles HTMLinputButton et LinkButton sont les exemples.
Effet spécial
Une autre exigence commune est qu'en plus des informations d'erreur affichées par le dispositif de vérification lui-même, d'autres effets sont nécessaires. Dans ce cas, toute modification que vous effectuez doit être effectuée en même temps sur le serveur ou le client. Supposons que vous deviez ajouter une étiquette pour modifier la couleur en fonction de la validité de l'entrée. Ce qui suit est de savoir comment implémenter cette tâche sur le serveur:
Classe publique ChangeColorPage: Page {
Label public lblzip;
Valeur publique RegulaxPressionValidator;
Override protégé vide Overoad (EventArgs e) {{
lblzip.foreColor = Valzip.isvalid?
}
}
Toutes les méthodes ci-dessus sont parfaites, mais tant que vous modifiez la vérification ci-dessus, vous constaterez qu'à moins d'exécuter la même opération sur le client, cela semblera très incohérent. Le cadre de vérification vous permettra d'éviter de nombreux effets doubles de ce type, mais il ne peut pas éviter d'autres effets que vous devez réaliser en même temps sur le client et le serveur. Ce qui suit est un fragment qui effectue la même tâche sur le client:
<asp: étiquette id = lblzip runat = serveur
text = code postal: />
<Asp: TextBox ID = txtZip runat = serveur
onchange = txtziponChange ();
<ASP: régulièrexpressionValididator id = Valzip runat = serveur
ControlTovalated = txtzip
ErrorMessage = code postal non valide
Validationxpression = [0-9] {5} /> <br>
<Script Language = JavaScript>
Fonction txtziponChange () {{) {
// Si la vérification du client n'est pas dans l'activité, elle n'effectuera aucune opération
ifof (page_validators) == Undefined) return;
// change la couleur de l'étiquette
lblzip.style.color = valzip.isvalid?
}
</cript>
API client Beta 1
Pour Beta 1 Edition, certaines fonctions qui peuvent être appelées à partir du script client entraîneront d'autres situations.
Tableau 4. Fonction de l'appel de script client
Description du nom
ValidatorValidate (VAL) utilise un périphérique de vérification client comme entrée. Faites en sorte que le périphérique de vérification vérifie ses entrées et mettez à jour son affichage.
ValidatorEnable (Val, activer) Obtenez un dispositif de vérification du client et une valeur booléenne. Activer ou désactiver le dispositif de vérification du client. S'il est désactivé, le périphérique de vérification du client ne sera pas évalué et le validateur du client sera toujours valide.
ValidatorHookupControl (Control, Val) a obtenu un élément HTML d'entrée et un dispositif de vérification du client. Modifiez ou créez l'événement de modification de l'élément afin que le périphérique de vérification puisse être mis à jour pendant la modification. Cette fonction convient aux vérifications personnalisées basées sur plusieurs valeurs d'entrée.
Son objectif spécial est d'activer ou de désactiver le dispositif de vérification. Si vous souhaitez vérifier que vous ne prenez effet que dans des circonstances spécifiques, vous devrez peut-être modifier l'état d'activation en même temps sur le serveur et les clients, sinon vous constaterez que l'utilisateur ne peut pas soumettre la page.
Ce qui suit est l'exemple ci-dessus plus un champ.
Classe publique Conditionnel: Page {
public htmlinputcheckbox chksameas;
Public ResearchFieldValidator RfvalshipAddress;
Override protégé void validate () {) {)
BOOL ARRIGHESHIP =!
rfValShipAddress.Enabled = CertiveShip;
base.validate ();
}
}
Ce qui suit est le code de l'équivalent client:
<entrée type = checkbox runat = server id = chksameas
Onclick = onchangesameas ();> la même chose que l'adresse de paiement <br>
<Script Language = JavaScript>
Fonction onchangesameas () {
var Entheship =! event.srcelement.status;
ValidatorEnable (RFValShipAddress, aperçu);
}
</cript>
Règles efficaces et informations d'erreur utiles
Chaque dispositif de vérification montre des informations d'erreur spécifiques sur des conditions spécifiques dans des contrôles spécifiques. Il existe des règles qui confirment si elle est valide.
Toutes les vérifications vides (sauf pour RequisFieldValidator) sont considérées comme valides. Si une valeur vide n'est pas valide, vous avez généralement besoin d'un Obligatrice de championnat et d'un autre vérification. Vous devez le faire, car en général, vous souhaitez toujours afficher différentes informations d'erreur sur le périphérique de vérification vide et l'efficacité. Vous pouvez également utiliser des informations peu claires, telles que "vous devez saisir une valeur, et cette valeur doit être comprise entre 1 et 10".
Une autre règle spéciale utilisée lorsque le champ de saisie ne peut pas être converti en un type de données spécifié est lié à CompareValidator et RangeValidator. Le processus d'évaluation de la validité du comparevalidator de ControlToCompare spécifie le processus d'évaluation de la validité est tel que décrit ci-dessous:
Si le champ d'entrée référencé par ControlTovalated est vide, il est efficace.
Si le champ de saisie référencé par ControlTovalated ne peut pas être converti en type de données requis, il n'est pas valide.
Si le champ de saisie référencé par ControlToCompare ne peut pas être converti en type de données requis, il est valide.
Le champ de saisie est converti en type de données et comparation requis.
La troisième étape semble un peu incohérente. La raison en est que si le périphérique de vérification vérifie l'efficacité de plusieurs champs en même temps, il est difficile d'écrire des informations d'erreur significatives pour le dispositif de vérification. Un dispositif de vérification indépendant doit être utilisé pour signaler la situation d'erreur dans le champ ControlToCompare. RangeValidator a des méthodes de travail similaires, avec des propriétés maximales et minimales.
Fonctions des propriétés activées, visibles et affichés
La différence entre les propriétés activées, visibles et d'affichage du périphérique de vérification peut ne pas être très évidente.
Display = Aucun ne peut être utilisé pour spécifier que le périphérique de vérification n'affiche directement aucun contenu, mais évalue toujours, affecte toujours l'efficacité globale et peut toujours mettre des erreurs dans le résumé du client et du serveur. Pour la vérification du client, ces valeurs sont déterminées pour utiliser les caractéristiques de style visible ou utiliser les caractéristiques de style d'affichage pour ouvrir ou fermer le dispositif de vérification. Pour la vérification du serveur, affichage = dynamique signifie que l'entrée n'affiche aucun contenu lorsque l'entrée est valide, et l'affichage = statique représente un espace qui ne change pas (). Le dernier paramètre doit être plié en aucun contenu lorsque la cellule qui ne contient que le périphérique de vérification dans le tableau est valide.
Pourquoi non seulement utiliser Visible = False pour rendre le dispositif de vérification visible? Dans ASP +, l'attribut visible du contrôle a de nombreuses significations: le contrôle de visible = false ne sera pas traité ou affiché du tout. C'est précisément à cause de cette signification que le dispositif visible = faux du dispositif de vérification signifie que non seulement n'affiche aucun contenu, mais ne peut pas non plus être utilisé. Ce dispositif de vérification ne sera pas évalué, n'affectera pas la validité de la page, ni ne sera placé dans l'abstrait.
Activé est neutre. Dans la plupart des cas, l'effet de activé = false et visible = false est exactement le même. Dans l'édition Beta 1 ou une version supérieure, il y a une différence importante: dans la vérification du client, le dispositif de vérification désactivé sera toujours envoyé au navigateur, mais il est dans un état désactivé. Vous pouvez utiliser la fonction validatorable dans le script client pour activer le périphérique de vérification.
Lorsque vous utilisez Visible ou activé pour contrôler s'il faut vérifier, faites attention à l'ordre de commande sur le serveur ci-dessus. Ou modifier avant la vérification, ou re -verifier après le changement. Sinon, leurs valeurs isvalides ne refléteront pas les modifications des attributs.
Contrôle de la valeur personnalisée
La façon la plus simple d'étendre le cadre de vérification consiste à utiliser le contrôle CustomValidator. Ce contrôle peut être utilisé pour effectuer des vérifications que d'autres contrôles de vérification ne peuvent pas être effectués, mais ils peuvent également exécuter des vérifications qui doivent accéder aux informations sur le serveur (telles que des bases de données ou des services Web).
Si le CustomValidator avec une seule fonction de vérification de serveur est ajouté, vous remarquerez que le périphérique de vérification ne participe pas à la vérification du client. Lorsque l'utilisateur bascule entre chaque champ avec la touche Tab, le CustomValidator ne sera pas mis à jour et le serveur rond-TRIP doit effectuer sa vérification en même temps. Si vous souhaitez utiliser le CustomValidator pour effectuer une vérification qui ne nécessite aucune information sur le serveur, vous pouvez également utiliser la propriété ClientValidationFunction pour que le périphérique de vérification participe complètement à la vérification du client. Supposons que vous fournissiez une question de vie client. Mais en fait, ce n'est qu'une partie de la vérification. La vérification de la fonction de vérification du client ne dépasse pas la vérification de l'exécution sur le serveur car les pirates peuvent facilement contourner la fonction de vérification.
Ce qui suit est un exemple simple d'utilisation de CustomValidator sur le client et le serveur, vérifiez uniquement si l'entrée est uniforme. Présentons la fonction du serveur (en C #):
{service partiel) {position
essayer {
int i = int.FromString (valeur);
Return ((i% 2) == 0);
} Attraper {
Retourne false;
}
}
Ce qui suit est la méthode de déclaration de la fonction sur le client et une fonction de vérification du client qui effectue le même chèque. Il s'agit généralement d'un formulaire JScript, mais si votre objectif est Microsoft® Internet Explorer, vous pouvez également utiliser le formulaire VBScript®.
<ASP: CustomValidator ID = CustomVal2 Runat = Server
ErrorMessage = nombres ne peuvent pas être supprimés!
ControlTovalated = txtCustomData
onservalidationFunction = serverValidation
ClientValidationFunction = Checkkeven /> <br>
Champ de données: <asp: Textbox ID = txtCustOsData runat = server />
<Script Language = JavaScript>
<! -
Fonction Checkkeven (source, valeur) {{
var valeur = parseInt (valeur, 10);
if (isnan (val))
Retourne false;
Retour ((val% 2) == 0);
}
// ->
</cript>
Voici quelques précautions utilisant CustomValidator:
Semblable à tous les autres contrôles de vérification (sauf pour requisFieldValidator), si le champ de saisie est vide, il est considéré que le CustomValidator est efficace.
Si le navigateur plus ancien est utilisé ou que la vérification du client est fermée, la fonction de vérification du client ne peut pas être appelée. Avant de définir la fonction, vous n'avez pas à vérifier la fonction du navigateur utilisé dans le navigateur, mais vous devez vous assurer que le navigateur ne provoque pas d'erreurs de script en raison de la définition. Assurez-vous de faire de votre code client comme une annotation de HTML, comme indiqué dans l'exemple suivant.
Deux paramètres sont transmis à votre fonction client et correspondent aux paramètres transmis à la fonction du serveur. Le premier est l'élément de périphérique de vérification du client, et le second est la valeur de contrôle spécifiée par le contrôletovalated. Cependant, sur le client, vous pouvez choisir de ne pas définir des paramètres pour la fonction, qui fonctionnera normalement.
Si vous utilisez Beta1 ou des versions supérieures, vous pouvez garder ControlTovalated comme vide. Dans ce mode, la fonction du serveur déclenchera toujours un aller-retour rond-trip, et la fonction client sera toujours déclenchée chaque fois que vous essayez de la soumettre. Vous pouvez utiliser cette fonctionnalité pour vérifier les contrôles que d'autres méthodes ne peuvent pas vérifier, telles que CheckBoxList ou des boutons radio séparés. Si la condition est basée sur plusieurs commandes et que vous ne souhaitez pas que l'utilisateur évalue la condition lors de la commutation entre chaque champ sur la page, vous pouvez utiliser cette méthode.
Une autre option dans la version bêta 1 ou supérieure est l'événement de modification de plusieurs contrôles. La méthode consiste à ajouter des scripts intégrés qui appellent le ValidatorHookupControl de la fonction du client, comme décrit ci-dessus.
Quels contrôles peuvent être vérifiés?
Pour permettre la vérification du contrôle par la référence de contrôle, le contrôle doit avoir vérifié les attributs. Tous les contrôles vérifiés ont des propriétés de validationPropertyAtTribute, qui indiquent l'attribut qui doit être lu pendant la vérification. Si vous écrivez votre propre contrôle, vous pouvez spécifier les attributs à utiliser en fournissant l'un d'eux, afin que le contrôle soit impliqué dans la vérification.
Pour permettre la vérification d'être effectuée normalement sur le client, l'attribut doit correspondre aux caractéristiques de valeur de l'élément HTML affiché par le client. De nombreux contrôles compliqués (tels que DataGrid et Calendar) ne valent pas le client et ne peuvent être vérifiés que sur le serveur. Par conséquent, seuls les contrôles les plus proches des éléments HTML peuvent participer à la vérification. De plus, le contrôle doit avoir une seule valeur logique sur le client. Par conséquent, Radiobuttonlist peut être vérifié, mais CheckBoxList ne peut pas.
Fin
L'explication mentionnée ci-dessus de la vérification ASP + peut avoir dépassé le contenu que vous souhaitez comprendre. Profitez-en!