J'ai un contrôleur avec deux méthodes simples:Asp.Net MVC EditorTemplate modèle est perdu après post
UserController Méthodes:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Details(string id)
{
User user = UserRepo.UserByID(id);
return View(user);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Details(User user)
{
return View(user);
}
Ensuite, il y a une vue simple pour afficher les détails:
<% using (Html.BeginForm("Details", "User", FormMethod.Post))
{%>
<fieldset>
<legend>Userinfo</legend>
<%= Html.EditorFor(m => m.Name, "LabelTextBoxValidation")%>
<%= Html.EditorFor(m => m.Email, "LabelTextBoxValidation")%>
<%= Html.EditorFor(m => m.Telephone, "LabelTextBoxValidation")%>
</fieldset>
<input type="submit" id="btnChange" value="Change" />
<% } %>
Comme vous pouvez le voir, j'utiliser un modèle d'éditeur "LabelTextBoxValidation":
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%= Html.Label("") %>
<%= Html.TextBox(Model,Model)%>
<%= Html.ValidationMessage("")%>
Affichage des informations de l'utilisateur n'est pas un problème. La vue rend parfaitement les détails de l'utilisateur. Lorsque je soumets le formulaire, l'utilisateur de l'objet est perdu. J'ai débogué sur la ligne "return View (User);" dans la méthode Post Details, l'objet utilisateur est rempli avec des valeurs nullables. Si je n'utilise pas le modèle d'éditeur, l'objet utilisateur est rempli avec les données correctes. Il doit donc y avoir quelque chose qui ne va pas avec le modèle de l'éditeur, mais ne peut pas comprendre ce que c'est. Suggestions?
Comparer le formulaire présenté dans les deux cas en utilisant Firebug ou Fiddler. Ce sera différent. Répare ça. –