MVC : mapping automatique d'un objet suite à POST HTTP
Bonjour,
Je m'auto-forme à ASP.NET / C# / MVC et je butte sur un problème de conception, certainement dû à mon manque d'expérience en objet.
Je schématise en reprenant les traditionnels exemples :
- Une classe Animal
- Une classe Pintade et une classe Canard, héritant toutes les deux d'Animal
J'ai également une classe "Listes" dans laquelle j'ai juste défini un enum :
Code:
1 2 3 4 5 6 7 8 9
|
public class Listes
{
public enum ListeTypeAnimal
{
Pintade,
Canard
}
} |
J'ai un formulaire Web qui est récupéré par une méthode [HttpPost] Index() du contrôleur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
[HttpPost]
public ActionResult Index(Animal unAnimal,ListeTypeAnimal listeTypeAnimal)
{
Animal cetAnimal = new Animal();
switch (listeTypeAnimal)
{
case Listes.ListeTypeAnimal.Pintade:
cetAnimal = (Pintade)unAnimal;
break;
case Listes.ListeTypeAnimal.Canard:
cetAnimal = (Canard)unAnimal;
break;
} |
Vous l'aurez peut-être compris, je cherche à créer un objet "Pintade" ou "Canard" selon ce que le formulaire web contient dans un champ nommé "listeTypeAnimal" (généré par un @Html.EnumDropDownListFor)
Je n'arrive pas à trouver la bonne articulation entre les différents éléments, dans l'exemple ci-dessus j'obtiens une erreur de cast, j'ai fait d'autres tentatives, tout aussi infructueuses.
Auriez-vous une suggestion, une meilleure pratique à adopter ?
Merci d'avance