2009-10-27 2 views
1

Je suis très noob quand il s'agit de ASP.NET MVC.Façon d'éviter FormCollection pour ASP.NET MVC?

Je regarde l'exemple de démarrage du complément ASP.NET MVC.

Je vois quelque chose comme ceci a été généré automatiquement:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(int id, FormCollection collection) 
{ 
    try 
    { 
     // TODO: Add update logic here 
     return RedirectToAction("Index"); 
    } 
    catch 
    { 
     return View(); 
    } 
} 

Je trouve cela pue parce que je veux utiliser Entity Framework où l'état de l'entité sera conservée. Je voudrais quelque chose de similaire à:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(Person person) 
{ 
    try 
    { 
     // TODO: Add update logic here 
     return RedirectToAction("Index"); 
    } 
    catch 
    { 
     return View(); 
    } 
} 

Avis Je pris FormCollection et l'a remplacé par la classe Person. - Je voudrais que cela évite les chaînes magiques. - Conserve les états de l'entité. - Plus explicite.

Est-ce encore possible?

/confondu avec MVC

Répondre

3

Oui, c'est possible! Les éléments de votre formulaire devront avoir le même nom que les propriétés du modèle que vous essayez de représenter. Ce processus est appelé liaison, et vous pouvez en découvrir plus si vous regardez l'objet ModelBinder. Pour plus d'informations, consultez cette question: ASP.NET MVC example of editing multiple child records.

+0

étonnant que le code I posté comme une conjecture a travaillé presque comme (chance devinez) ... de toute façon j'ai trouvé cet article utile aussi: http://odetocode.com/Blogs/scott/archive/2009/04/27/6-tips-for- asp-net-mvc-model-binding.aspx – vidalsasoon

2

Oui, bien que je recommande fortement d'utiliser des modèles de présentation/modifier dédiés au lieu d'utiliser vos entités. Néanmoins, ce que vous montrez fonctionnera, s'il y a assez d'informations dans votre formulaire pour remplir toutes les propriétés non-NULL de Person.

+0

Je suis en effet conscient que c'est important: P http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx – vidalsasoon

Questions connexes