Quelle est la meilleure façon d’implémenter la validation de champ à l’aide d’ASP.NET MVC ?

StackOverflow https://stackoverflow.com/questions/16747

  •  08-06-2019
  •  | 
  •  

Question

Je construis un site Web public en utilisant ASP.NET, dans le cadre du livrable dont j'ai besoin pour créer un site d'administration pour la saisie des données des éléments affichés sur le site public, je me demandais quelles techniques ou procédures les gens utilisent-ils pour valider les entrées à l'aide d'ASP. .NETMVC.

Était-ce utile?

La solution

Jetez un oeil à Plugin de validation JQuery ce plugin est incroyable, il est simple à mettre en œuvre et possède toutes les fonctionnalités dont vous pourriez avoir besoin, y compris la validation à distance via AJAX.

Un exemple de méthode de contrôleur MVC peut également être trouvé ici qui utilise essentiellement le type d'action JsonResult comme :

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}

Autres conseils

@Chuck - Vous ne pouvez pas encore utiliser les contrôles AjaxToolKit dans ASP.NET MVC.Ils ne fonctionnent que dans le modèle de publication de page ASP.NET.

Mise à jour:

Depuis le 20 août 2008, vous pouvez utiliser uniquement les fichiers de script de la boîte à outils de contrôle Ajax à l'intérieur du framework ASP.NET MVC.Voici un lien vers le libérer.

Aussi, voici un tutoriel sur leur utilisation pour créer un calendrier contextuel par Stephen Walther.

Je veux juste m'assurer que tout le monde reçoit les bonnes informations s'il lit ce fil.

L'OMI utilisant xVal avec jQuery et DataAnnotationsModelBinder est la meilleure combinaison.

Parfois cependant, il existe des règles de validation qui ne peuvent pas être entièrement vérifiées côté client, vous devez donc utiliser la validation côté client à distance.

J'ai trouvé un moyen d'implémenter de manière générique la validation côté client à distance avec xVal / jQuery.validate afin que

  • Les règles de validation restent uniquement dans votre modèle ASP.NET MVC
  • Vous écrivez chaque règle de validation une seule fois, et uniquement dans du code C# facilement testable.Il n'y a pas de JavaScript ou autre équivalent côté client.
  • Il n'est pas nécessaire de créer une branche ou de modifier autrement xVal ou jquery.validate
  • Tout ce que vous avez à faire pour chaque nouvelle règle de validation de formulaire à distance est de dériver de la classe de base présentée dans cet article.

j'ai écrit un article de blog sur ceci décrivant tous les détails.

J'aime utiliser le Validation en direct bibliothèque dans mes applications ASP.NET MVC.Grâce à lui, j'ai pu mettre en place un moyen de faire de la validation sur le client et sur le serveur.De cette façon, l'utilisateur saura que quelque chose ne va pas avant même de soumettre le formulaire, puis utilisera la fonctionnalité côté serveur pour les autres cas particuliers.

J'ai commencé avec cet article qui fait un très bon travail sur la façon de configurer une configuration similaire :

Validation côté client basée sur un modèle pour ASP.NET MVC

Mon chemin:

Je suis l'exemple présenté dans le contrôleur de compte fourni avec la version Preview 4, où le champ est vérifié dans le contrôleur et si une erreur est rencontrée, un tableau d'erreurs de chaîne est regroupé pour être affiché ultérieurement dans la même vue qui a démarré le demande.

J'ai également suivi les pensées de Stephen Walther sur MVC et je pense ce post C'est génial de repeupler les champs avec les données soumises pour qu'elles soient modifiées avant de les soumettre à nouveau.

Qu'est-ce que vous utilisez, vous les gars?

Avez-vous regardé les contrôles fournis avec AjaxToolKit ?J'ai utilisé MaskedEditExtender et ValidatorCalloutExtender et j'ai été très satisfait des résultats.

@Dale - merci de m'avoir corrigé sur ce point !Je n'en étais pas au courant (je viens de commencer à utiliser la boîte à outils la semaine dernière).Veuillez ne pas tenir compte de ma suggestion :)

@Zack:Oui, j'ai également lu ce message et, sur la base de ce message, SO utilise jQuery comme bibliothèque javascript.Je ne peux pas parler au nom de l'équipe SO, mais je suppose qu'ils utilisent très probablement les fonctionnalités ajax de jquery pour gérer leurs requêtes ajax.En fait, ce n'est pas si mal de coder à la main si vous utilisez une bibliothèque javascript comme jQuery, Prototype, et MooTools.Ensuite, vous utilisez la nouvelle valeur de retour JsonResult ActionResult pour vos actions et effectuez des requêtes ajax à leur encontre.Ces bibliothèques encapsulent les objets XmlHttpRequest pour vous et facilitent la sécurisation des appels ajax et du navigateur.

Vous pouvez utiliser le Cadre de validation .net sur codeplex si vous souhaitez une validation côté client/serveur.Il génère du code pour le plugin de validation jQuery basé sur les règles définies dans le modèle.De plus, si vous utilisez la fonctionnalité "avancée" du framework, vous pouvez contrôler manuellement les paramètres du plugin de validation jQuery.Vérifiez démarrage rapide mvc.

Utilisez un hybride de validation côté client et de validation côté serveur.

Pour la validation côté client, l'approche décrite dans le réponse de Daniel Pollard semble solide.La validation côté client n'est pas obligatoire mais offrira à l'utilisateur une expérience plus agréable et beaucoup plus réactive.

La validation côté serveur, en revanche, devrait être obligatoire :ne faites jamais confiance aux commentaires du client.J'examinerais certainement les capacités fournies par le framework ASP.NET MVC dans l'aperçu 5 (comme décrit dans le réponse de Matt Hinze),

Ma façon préférée d'effectuer la validation du client et du serveur à l'aide d'attributs basés sur un modèle.J'ai écrit un court article à ce sujet et publié également le code source, qui vous permettra essentiellement de créer une classe comme celle-ci.



class User {

    [Required]
    public string Name{get;set;}

    [Email][Required]
    public string Email {get;set;}
}

Et le code javascript approprié sera généré pour effectuer la validation du client ainsi qu'un coureur de validation côté serveur validera votre formulaire soumis.

Lisez le message ci-dessus ici

@Mandrin - Pas de soucis.C'est à cela que sert SO.Vous apprenez quelque chose et la personne qui pose la question apprend quelque chose.

Comment AJAX est-il géré sur Stack Overflow ?Est-ce que JQuery le fait ?

  • Faites un clic droit sur la page
  • Recherchez « Afficher la source de la page » dans le menu contextuel
  • Cliquez dessus

:-)

Si vous souhaitez conserver la fonctionnalité prête à l'emploi mais que vous avez besoin de l'étendre, jetez un œil à ma réponse ici à une question sur IDataError.

Fondamentalement, j'utilise des annotations de données et un modelbinder pour une logique plus compliquée.J'ai trouvé que c'était une manière assez propre et me permettait de rester dans les limites de ce que MS propose.

J'explique comment utiliser un modelbinder pour ajouter une vérification « au niveau de la classe » de votre modèle sans avoir à utiliser IDataError - ce qui, comme vous l'avez vu ici, peut être assez maladroit.Il vous permet toujours d'utiliser les attributs [Obligatoires] ou tout autre attribut de validation personnalisé dont vous disposez, mais vous permet d'ajouter ou de supprimer des erreurs de modèle individuelles.Pour en savoir plus sur l'utilisation des annotations de données, je recommande vivement ce message de Scott Gu.

L'un des moyens d'implémenter la validation dans ASP.NET MVC consiste à utiliser les annotations de données ainsi que la validation côté client.Ce article montre comment nous pouvons faire cela pour les classes de modèles générées par le framework d'entité.

Dale Ragan a écrit:

Vous ne pouvez pas utiliser les contrôles AjaxToolKit dans ASP.NET MVC

Comment AJAX est-il géré sur Stack Overflow ?Est-ce que JQuery le fait ?Dans son article Coding Horror Les secrets des ninjas JavaScript Jeff a écrit sur l'utilisation de JQuery lors de l'écriture de Stack Overflow.

Ils ne l'ont sûrement pas codé à la main.Je l'ai fait une fois avec tout le JavaScript XMLHttpRequest lorsque le terme "AJAX" a été popularisé vers 2005.C'était un cauchemar.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top