Ich habe einen Controller mit zwei einfachen Methoden:Asp.Net MVC EditorTemplate Modell ist nach Post verloren
Usercontroller Methoden:
[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);
}
Dann gibt es eine einfache Ansicht, die die Details zur Anzeige:
<% 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" />
<% } %>
Wie Sie sehen können, verwende ich eine Editor-Vorlage "LabelTextBoxValidation":
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%= Html.Label("") %>
<%= Html.TextBox(Model,Model)%>
<%= Html.ValidationMessage("")%>
Das Anzeigen von Benutzerinformationen ist kein Problem. Die Ansicht bietet eine perfekte Darstellung der Benutzerdetails. Wenn ich das Formular absende, ist der Objektbenutzer verloren. Ich debuggte in der Zeile "return View (User)"; In der Methode Post-Details wird das Benutzerobjekt mit Nullwerten gefüllt. Wenn ich die Editorvorlage nicht verwende, wird das Benutzerobjekt mit korrekten Daten gefüllt. Es muss also etwas mit der Editorvorlage nicht stimmen, aber ich kann nicht herausfinden, was es ist. Vorschläge?
Vergleichen Sie die eingereichten Formular in beiden Fällen mit Firebug oder Fiddler. Es wird anders sein. Repariere das. –