На странице 90 в книге " Wrox Professional ASP.NET MVC 2 " код указан как:
if (TryUpdateModel(dinner)) {
dinnerRepository.Save();
redirectToAction("Details", new { id=dinner.DinnerID });
Но оно должно гласить:
if (TryUpdateModel(dinner, "Dinner")) {
dinnerRepository.Save();
redirectToAction("Details", new { id=dinner.DinnerID });
Эта перегрузка метода попытается обновить указанную модель [Dinner], а не значение по умолчанию [ViewModel], используя значения из поставщика значений контроллера. В основном все, что он делает, это добавляет префикс ко всем вашим значениям при поиске их в провайдере.
Поэтому, когда Модель хочет обновить свое свойство Title, она будет искать Dinner.Title, а не просто Title в поставщике значений контроллера.
Во время отладки взгляните на метод Edit ActionResult и проверьте входной параметр FormCollection. Когда вы покопаетесь в массиве записей, вы обнаружите, что все ключи начинаются с префикса объекта свойства, на который вы ссылались в вашем представлении, в вашем случае это представление редактирования, например:
<%: Html.TextBoxFor(model => model.Dinner.Title, new {size=50, @class="prettyForm" })%>