2010-12-12 24 views
0

Dans le livre Professional MVC écrit par Hanselman/Guthrie, ils montrent comment valider un formulaire en utilisant des méthodes d'aide intégrées et des annotations de données. Cela fonctionne, mais nécessite beaucoup de code manuel.Valider un formulaire en utilisant MVC3?

Existe-t-il un moyen nouveau/plus facile de valider les entrées en utilisant une plomberie intégrée? J'utilise le Repository Pattern avec Entity Framework.

Merci!

+4

Que voulez-vous dire par code de plaque? Je pense que l'approche des annotations de données est très succincte, en particulier en utilisant vos propres implémentations dérivées telles que EmailAddress, StrongPassword etc. –

+0

Je suis d'accord avec @The Flower Guy ici, d'abord qu'est-ce que vous entendez par _boilerplate code_? La deuxième utilisation de DataAnnotations est la meilleure façon d'aller avec MVC, d'autant plus que vous pouvez écrire vos propres implémentations (comme cet exemple (http://rlm.cc/hnRC0K) sur mon blog) – PsychoCoder

+0

Vous pourriez également envisager d'utiliser ViewModels pour votre Vues et utiliser les annotations de données sur eux. Vous n'aurez alors plus besoin d'annoter vos modèles directement si cela vous dérange. Je suis également d'accord avec FlowerGuy à ce sujet. – ElvisLives

Répondre

0

Comme d'autres l'ont mentionné dans les commentaires, l'utilisation de Data Annotations est la nouvelle méthode de validation. La bonne chose à propos de l'utilisation des annotations de données est que vous pouvez valider vos modèles quand vous le voulez, n'importe où dans votre application. En général, je configurer un service générique à faire comme suit:

public class ValidationService<T> : IValidationService<T> 
{ 
    public List<ValidationResult> Validate(T obj) 
    { 
     var results = new List<ValidationResult>(); 
     Validator.TryValidateObject(
      obj, 
      new ValidationContext(obj, null, null), 
      results, 
      true); 
     return results; 
    } 
} 

ensuite de valider un modèle:

var service = new ValidationsService<MyClass>(); 
var errors = service.Validate(myobject); 

Considérant combien les fonctionnalités que vous obtenez pour une petite quantité de code, les annotations de données sont assez puissants , surtout quand vous considérez comme il est facile d'écrire vos propres attributs de validation.

0

Si vous allez utiliser ViewModels Je recommande fortement d'utiliser AutoMapper de souceforge

Je suis d'accord avec tout le monde que DataAnnotation est grande - sa capacité à intégrer avec jQuery à offrir la validation côté client sans avoir à écrire une seule ligne de jQuery me l'a vendu en une seconde!