Je suis le tutoriel Scott Guthries MVC (http://nerddinnerbook.s3.amazonaws.com/Part6.htm) et il y a quelque chose que je ne comprends pas.ASP.NET MVC NerdDinner Tutoriel question
la classe contrôleur appelé DinnersController a les méthodes suivantes Créer:
public ActionResult Create()
{
Dinner dinner = new Dinner()
{
EventDate = DateTime.Now.AddDays(7)
};
return View(new DinnerFormViewModel(dinner));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner)
{
if (ModelState.IsValid)
{
try
{
dinner.HostedBy = "SomeUser";
dinnerRepository.Add(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
catch
{
foreach (var violation in dinner.GetRuleViolations())
ModelState.AddModelError(violation.PropertyName, violation.ErrorMessage);
}
}
return View(new DinnerFormViewModel(dinner));
}
La première méthode provoque la page Create.aspx à être vues qui affiche les données de formulaire pour le type d'objet-à-dire « DinnerViewFormModel »
La classe 'DinnerViewFormModel' contient une propriété appelée 'Dinner', affichant les informations pertinentes pour les objets de type Dinner en appelant:
<label for="Title">Title:</label> <%= Html.TextBox("Title", Model.Dinner.Title) %>
Je comprends ce qui se passe à ce jour. Cependant, Create.aspx contient un bouton de type submit:
<input type="submit" value="Create" />
Lorsque le bouton est cliqué, la méthode suivante est appelée:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner)
Ce que je ne comprends pas, si la forme de Les données du modèle sont un objet 'DinnerViewFormModel', comment MVC sait-il quel objet 'Dinner' doit être passé à la méthode Create?
S'il vous plaît quelqu'un pourrait m'éclairer? Merci
Lire http://weblogs.asp.net/nmarun/archive/2010/02/25/asp-net-mvc-model-binding.aspx - Je pense que c'est un très bon article sur le sujet . – Carson63000