Ich arbeite mit ASP.NET MVC2 RC und kann nicht herausfinden, wie die HTML-Helfer zu bekommen, TextBoxfor mit einemViewmodel Muster zu arbeiten. Bei Verwendung auf einer Bearbeitungsseite werden die Daten nicht gespeichert, wenn UpdateModel() im Controller aufgerufen wird. Ich habe die folgenden Codebeispiele aus der NerdDinner-Anwendung genommen.Mit Ansichtsmodell Muster mit MVC 2 stark typisierten HTML Helfer
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));
}
}
Wenn der ursprüngliche Helfer Stil verwendet wird (Http.TextBox) die Updatemodel (Abendessen) Aufruf funktioniert wie erwartet und die neuen Werte werden gespeichert.
Wenn der neue (MVC2) Helfer Stil verwendet wird (Http.TextBoxFor) das Updatemodel (Abendessen) -Aufruf die Werte nicht aktualisiert. Ja, die aktuellen Werte werden beim Laden in die Bearbeitungsseite geladen.
Gibt es noch etwas, das ich dem Controller-Code hinzufügen muss, damit es funktioniert? Der neue Helfer funktioniert gut, wenn ich nur ein Modell und kein ViewModel-Muster verwende.
Vielen Dank.
Hallo, ich habe Das gleiche Problem beim Erstellen von Maßnahmen. Können Sie bitte einen Blick http://stackoverflow.com/questions/2494940/custom-viewmodel-with-mvc-2-strongly-typed-html-helpers-return-null-object-on-cre –