3

Aujourd'hui (15 janvier 2010) Scott blogué sur le modèle de validation ASP.NET MVC2MVC Validation du modèle Programmatic Assistance à l'enregistrement

http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

Tout le monde sait comment quelqu'un peut-il ajouter des règles de validation lors de l'exécution par programme?

« Enregistrement Programmatic » est une fonctionnalité similaire pris en charge par ValidationAspects

// register lambda syntax validation functions 
typeof(User).GetProperty("Name").AddValidation<string>((name, context) => 
    { if (!Exists(name)) { throw new ValidationException("Username is unknown"); } }); 

// register validation factories (classes) 
typeof(User).GetProperty("Name").AddValidation(new [] { new NotNullOrEmpty()}); 

// don't like strings? 
TypeOf<User>.Property(user => user.Name).AddValidation(new [] { new NotNullOrEmpty()}); 
+0

liée: http://blogs.msdn.com/marcinon/archive/2008/05/22/dynamic-data-samples-custom-metadata-providers.aspx –

Répondre

1

Fournir des métadonnées personnalisées que vous aurez à mettre en œuvre la ModelMetadataProvider de classe abstraite et l'enregistrer dans votre global.asax:

  ModelMetadataProviders.Current = new ConventionMetadataProvider(); 

Cela n'ajoute pas d'attributs de validation lors de l'exécution. Vous fournissez simplement TOUTES les informations de validation dans les classes ModelMetadata qui sont ensuite lues par les bits HTML.EditorFor.

+0

Vous voulez dire que nous ne pouvons pas ajouter d'attributs de validation à l'exécution avec la fonctionnalité par défaut? Pouvez-vous élaborer s'il vous plaît :) –

0

Les attributs sont créés au moment de la compilation et non au moment de l'exécution. Ils ne peuvent pas être modifiés après la compilation.

Cependant, il existe plusieurs options de validation au moment de l'exécution. Mon préféré est Fluent Validation. Vous créez des classes de validation qui s'exécutent au moment de l'exécution. Vous êtes plus ou moins limité uniquement aux données statiques et aux données du modèle.

Questions connexes