Ho un controller con due semplici metodi:Asp.Net MVC EditorTemplate modello viene perso dopo Messaggio
UserController Metodi:
[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);
}
Poi c'è una semplice vista per la visualizzazione dei dettagli:
<% 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" />
<% } %>
Come potete vedere, io uso un editor di modelli "LabelTextBoxValidation":
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%= Html.Label("") %>
<%= Html.TextBox(Model,Model)%>
<%= Html.ValidationMessage("")%>
La visualizzazione delle informazioni dell'utente non è un problema. La vista rende perfettamente i dettagli dell'utente. Quando invio il modulo, l'utente dell'oggetto è perso. Ho eseguito il debug sulla riga "return View (User);" nel metodo Post Details, l'oggetto utente è pieno di valori nullable. Se non utilizzo il modello di editor, l'oggetto utente è pieno di dati corretti. Quindi ci deve essere qualcosa di sbagliato nel modello di editor, ma non riesco a capire di cosa si tratta. Suggerimenti?
Confrontare il form inserito in entrambi i casi utilizzando Firebug o Fiddler. Sarà diverso Correggilo. –