sto lavorando con ASP.NET MVC2 RC e non riesco a capire come ottenere l'helper HTML, TextBoxfor di lavorare con un ViewModel modello. Se utilizzato in una pagina di modifica, i dati non vengono salvati quando nel controller viene chiamato UpdateModel(). Ho preso i seguenti esempi di codice dall'applicazione NerdDinner.usando il modello ViewModel con MVC 2 fortemente tipizzato HTML Helpers
Edit.aspx
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<NerdDinner.Models.DinnerFormViewModel>" %>
...
<p>
// This works when saving in controller (MVC 1)
<label for="Title">Dinner Title:</label>
<%= Html.TextBox("Title", Model.Dinner.Title) %>
<%= Html.ValidationMessage("Title", "*") %>
</p>
<p>
// This does not work when saving in the controller (MVC 2)
<label for="Title">Dinner Title:</label>
<%= Html.TextBoxFor(model => model.Dinner.Title) %>
<%= Html.ValidationMessageFor(model=> model.Dinner.Title) %>
</p>
DinnerController
// POST: /Dinners/Edit/5
[HttpPost, Authorize]
public ActionResult Edit(int id, FormCollection collection) {
Dinner dinner = dinnerRepository.GetDinner(id);
if (!dinner.IsHostedBy(User.Identity.Name))
return View("InvalidOwner");
try {
UpdateModel(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id=dinner.DinnerID });
}
catch {
ModelState.AddModelErrors(dinner.GetRuleViolations());
return View(new DinnerFormViewModel(dinner));
}
}
Quando si utilizza lo stile di supporto originale (Http.TextBox) il (cena) chiamata UpdateModel funziona come previsto e i nuovi valori vengono salvati.
Quando viene utilizzato il nuovo stile di supporto (MVC2) (Http.TextBoxFor), la chiamata UpdateModel (cena) non aggiorna i valori. Sì, i valori correnti vengono caricati nella pagina di modifica al caricamento.
C'è qualcos'altro che devo aggiungere al codice del controller perché funzioni? Il nuovo helper funziona bene se sto usando un modello e non un pattern ViewModel.
Grazie.
Ciao, ho lo stesso problema per creare un'azione. Potete per favore dare un'occhiata a http://stackoverflow.com/questions/2494940/custom-viewmodel-with-mvc-2-strongly-typed-html-helpers-return-null-object-on-cre –