2009-07-22 6 views
0

Ok, j'ai un problème majeur avec un contrôle que j'utilise.Validation sur les contrôles dynamiques

Le site que je fais utilise des unités personnalisées pour certains champs dans leur caisse (qui ont décidé que les chevaux doivent être des mesures mains pour l'amour de Dieu ?!), et nous devons être en mesure de valider en fonction de l'unité sélectionnés, c'est à dire qu'ils peuvent avoir entre 15 et 40 mains (ou quelque chose) qui est de 200 à 900 cm (ces nombres sont complètement aléatoires).

normalement, cela serait validé en utilisant la validation côté serveur pour nous permettre de traiter l'unité actuelle, de convertir l'entrée de manière appropriée et de la comparer aux limites dynamiques.

Malheureusement, ces contrôles sont affichés de façon dynamique sur la page lors du chargement de la page. La validation côté serveur ne se déclenche donc pas car ils n'existent pas à la publication. Ce que j'ai l'intention de faire pour éviter cela est d'utiliser une autre méthode que nous avons utilisée auparavant, similaire à un validateur regex standard mais piraté pour permettre le code derrière (je ne l'ai pas écrit mais ils semblent fonctionner). Ceci n'est pas sur la page, et donc j'aurais besoin d'accéder à l'objet de la page via HttpContext ou une autre méthode pour obtenir les unités correctes à partir d'une liste déroulante, quelqu'un peut-il suggérer soit un moyen de le faire? ou une meilleure façon de valider les contrôles?

Oh, et oui c'est incroyablement compliqué et aléatoire.

Cheers, Ed

+0

La reine a décidé des mains, je pense, car elle n'avait pas un ruban à mesurer sur elle quand elle inspectait un cheval un jour. –

+0

Vous parlez de pages, onload. Est-ce ASP? Soyez plus précis =) –

+0

Peut-être que mon dernier commentaire était juste du folklore, mais Clément a raison. Si vous cherchez à valider ce côté serveur, vous pouvez simplement lire les valeurs du formulaire ou de la chaîne de requête et vérifier qu'elles sont valides. L'unité n'est pas vraiment importante si vous avez des critères de validation pour le champ, ou une façon de dire quels devraient être les critères. –

Répondre

3

Il y a quelques points à souligner ici: Tout d'abord, vous pouvez obtenir postbacks hors commandes qui sont générées dynamiquement, tant que vous les re-générer avec une pièce d'identité cohérente au début de la chaque événement de publication, une fois que vous les avez recréés, ASP.NET reconnectera ViewState et autres commandes, puis déclenchera votre méthode de rappel après cela.

Le point suivant, vous pouvez utiliser le framework ajax ASP.NET pour appeler une méthode statique sur votre classe de page en utilisant du javascript (essentiellement, il devient un service mini-web). Commander this lien sur la façon de le faire. Cela pourrait vous permettre d'écrire du javascript pour appeler une méthode de validation côté serveur. Il est uniquement statique, vous devez donc transmettre toutes les données dont vous avez besoin à partir de votre code client. Enfin, vous pouvez avoir plusieurs validateurs regex, un pour chaque unité, puis utiliser un javascript dans l'événement onchanged pour que le champ units puisse activer/désactiver le bon. Je ne l'ai pas fait moi-même, mais je crois que vous pouvez facilement désactiver un validateur via javascript. (Commander this lien)

+0

Bonne réflexion sur les multiples validateurs, je vais prendre cette route. J'accepte la réponse quand SO arrête d'être bogué et que je clique sur la coche = D –

Questions connexes