2009-08-20 5 views
3

Ich entwickle eine kleine Website mit ASP.NET MVC, MySQL und NHibernate.Wie [und wo] eine Validierung implementieren mit ModelBinder

Ich habe eine Kontaktklasse:

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

und Modell Binder:

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; 
    } 
} 

Auch habe ich eine Ansicht mit einer Form meiner Datenbank zu aktualisieren, mit dieser Aktion:

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

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

Bis hier, alles funktioniert gut. Aber ich muss eine Formularvalidierung implementieren, bevor ich meinen Kontakt aktualisiere.

Meine Frage ist: Wo soll ich diese Validierung implementieren? In der ActionResult-Methode oder in Model Binder? Oder anderswo?

Vielen Dank.

Antwort

2

Werfen Sie einen Blick auf XVAL von Steve Sanderson.

In Ihren Geschäftsobjekten sollten Sie Ihre Geschäftslogik anwenden.

Güte

Dan

XVal

0

I zweite Steve Sanderson, ist sein Buch erstaunlich.

Ich habe wirklich die Nerd Abendessen Ansatz von Rob Conery, Scott Hanselman, Phil Haack, Scott Guthrie geschrieben. Grundsätzlich haben Sie in jeder Entität eine Methode, die gegen Geschäftslogik validiert. Diese Methode gibt eine Liste von RuleViolations zurück, die das Feld/Fehler msg enthalten. Sie legen auch einen bool Wert für convience frei.

Sie erhalten den kostenlosen Kapitel hier: Nerd Dinner Chapter