Skip to content

Modele etat deslieux

ModelState est une propriété d`un contrôleur et peut être accédé à partir de ces classes qui héritent de System. Web. Mvc. Controller. À partir de la errata: ModelState. AddRuleViolations (dîner. GetRuleViolations ()); Chacune des propriétés possède une instance de ValueProviderResult qui contient les valeurs réelles envoyées au serveur. MVC crée toutes ces instances automatiquement pour nous lorsque nous soumettons un POST avec des données, et l`action POST a des entrées qui mappez aux valeurs envoyées. Essentiellement, MVC enveloppe les entrées utilisateur dans plus de classes conviviales (ModelState et ValueProviderResult) pour une utilisation plus facile. ModelState a deux objectifs: stocker la valeur soumise au serveur et stocker les erreurs de validation associées à ces valeurs. Il y a encore deux propriétés importantes dont nous n`avons pas discuté, cependant: la propriété ModelState.

Errors et la propriété ModelStateDictionary. IsValid. Ils sont utilisés pour la deuxième fonction de ModelState: pour stocker les erreurs trouvées dans les valeurs envoyées. Le ModelState représente une collection de paires nom et valeur qui ont été envoyées au serveur pendant un POST. Il contient également une collection de messages d`erreur pour chaque valeur soumise. En dépit de son nom, il ne sait pas réellement quoi que ce soit sur les classes de modèle, il a seulement des noms, des valeurs et des erreurs. Nous pouvons effectivement ajouter des erreurs à l`état du modèle via la méthode AddModelError sur ModelStateDictionary: Notez que l`instance de ModelState pour l`adresse de messagerie a maintenant une erreur dans la collection Errors. Lorsque MVC crée l`état du modèle pour les propriétés soumises, il passe également par chaque propriété dans le ViewModel et valide la propriété à l`aide des attributs qui lui sont associés. Si des erreurs sont trouvées, elles sont ajoutées à la collection Errors dans le ModelState de la propriété. Pour un peu plus d`informations, consultez Professional ASP.NET MVC 5, en particulier le chapitre 6, qui détaille les méthodes de validation à l`aide de la ModelState. Le premier paramètre de la méthode AddModelError est le nom de la propriété à laquelle l`erreur s`applique.

Dans ce cas, nous l`avons défini sur LastName. Vous pouvez également le définir à rien (ou un faux nom) si vous voulez juste qu`il apparaisse dans le ValidationSummary et non dans un ValidationMessage. Ce que tout cela signifie, c`est qu`en configurant la validation de cette manière, nous permettons à MVC de simplement travailler la façon dont il a été conçu. ModelState stocke les valeurs envoyées, leur permet d`être mappées aux propriétés de classe (ou tout simplement en tant que paramètres de l`action) et conserve une collection de messages d`erreur pour chaque propriété. Dans des scénarios simples, c`est tout ce dont nous avons besoin, et tout cela se passe dans les coulisses! Le ModelState représente les valeurs et les erreurs envoyées dans lesdites valeurs pendant un POST. Le processus de validation respecte les attributs comme required et EmailAddress, et nous pouvons ajouter des erreurs personnalisées à la validation si nous le désirons. ValidationSummary et ValidationMessageFor lus directement à partir de ModelState pour afficher des erreurs à l`utilisateur. Voyons ce qui se passe lorsque nous essayons de soumettre un POST non valide qui manque l`adresse e-mail. Lorsque nous obtenons l`action POST pendant le débogage, nous avons les valeurs suivantes dans notre ModelStateDictionary: J`ai également un projet d`exemple très simple sur GitHub qui montre comment le ModelState fonctionne et fournit tout le code et le balisage dans ce post.

Share Our Posts

Share this post through social bookmarks.

  • Delicious
  • Digg
  • Newsvine
  • RSS
  • StumbleUpon
  • Technorati

Comments

Tell us what do you think.

There are no comments on this entry.

Trackbacks

Websites mentioned my entry.

There are no trackbacks on this entry

Contact Us

Driveline Systems
60 Sunderland Road
Sandy
Beds
SG19 1QY

Telephone: 01767 690160
Fax: 01767 680701

Driveline Systems Ltd

Copyright ©2013 Driveline Systems Limited
Site by DigitalDotDesign