2009-08-20 7 views
3

Je développe un petit site en utilisant ASP.NET MVC, MySQL et NHibernate.Comment [et où] implémenter une validation en utilisant ModelBinder

J'ai une classe Contact:

[ModelBinder(typeof(CondicaoBinder))] 
public class Contact { 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
    public virtual int Age { get; set; }  
} 

Et un classeur Modèle:

public class ContactBinder:IModelBinder { 
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { 
     Contact contact = new Contact(); 
     HttpRequestBase form = controllerContext.HttpContext.Request; 

     contact.Id = Int16.Parse(form["Id"]); 
     contact.Name = form["Name"]; 
     contact.Age = Int16.Parse(form["Age"]); 

     return contact; 
    } 
} 

Aussi, j'avoir une vue d'un formulaire pour mettre à jour ma base de données, en utilisant cette action:

public ActionResult Edit([ModelBinder(typeof(ContactBinder))] Contact contact) { 
    contactRepo.Update(contact); 

    return RedirectToAction("Index", "Contacts"); 
} 

Jusqu'à ici, tout fonctionne bien. Mais je dois mettre en place une validation de formulaire, avant de mettre à jour mon contact.

Ma question est: Où dois-je mettre en œuvre cette validation? Dans la méthode ActionResult ou dans Model Binder? Ou ailleurs?

Merci beaucoup.

Répondre

2

Jetez un coup d'œil à XVAL par Steve Sanderson.

Vos objets métier sont l'endroit où votre logique métier doit être appliquée.

Bonté

Dan

XVal

0

Je deuxième Steve Sanderson, son livre est incroyable.

J'ai vraiment aimé l'approche du dîner nerd écrite par Rob Conery, Scott Hanselman, Phil Haack, Scott Guthrie. Fondamentalement, vous avez une méthode dans chaque entité qui valide contre la logique d'affaires. Cette méthode renvoie une liste de RuleViolations qui contiennent le champ/error msg. Vous exposez également une valeur booléenne pour convience.

Vous obtenez le chapitre gratuit ici: Nerd Dinner Chapter

Questions connexes