我正在使用ASP.NET MVC2 RC,无法弄清楚如何获取HTML帮助程序,TextBoxfor使用ViewModel模式.在编辑页面上使用时,在控制器中调用UpdateModel()时,不会保存数据.我从NerdDinner应用程序中获取了以下代码示例.
Edit.aspx
" %>
...
// This works when saving in controller (MVC 1)
Dinner Title:
// This does not work when saving in the controller (MVC 2)
Dinner Title:
model.Dinner.Title) %>
model.Dinner.Title) %>
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));
}
}
当使用原始帮助器样式(Http.TextBox)时,UpdateModel(晚餐)调用按预期工作并保存新值.
当使用新的(MVC2)帮助器样式(Http.TextBoxFor)时,UpdateModel(晚餐)调用不会更新值.是的,当前值在加载时加载到编辑页面.
是否有其他东西我需要添加到控制器代码才能工作?如果我只是使用模型而不是ViewModel模式,新的帮助程序工作正常.
谢谢.