В MVC3 кажется, что способ отображения свойств модели в вашем представлении по умолчанию выглядит так:
@Html.DisplayFor(model => model.Title)
Это прекрасно работает, если ваша модель точно соответствует вашему объекту. Но если вы определяете пользовательскую ViewModel, например, как в учебнике NerdDinner
public class DinnerFormViewModel {
// Properties
public Dinner Dinner { get; private set; }
public SelectList Countries { get; private set; }
// Constructor
public DinnerFormViewModel(Dinner dinner) {
Dinner = dinner;
Countries = new SelectList(PhoneValidator.AllCountries, dinner.Country);
}
}
Тогда ваш код DisplayFor будет выглядеть так:
@Html.DisplayFor(model => model.Dinner.Title)
Это означает, что имена элементов формы Dinner.Title
вместо просто Title
, поэтому, если вы вызовете UpdateModel
в своем коде действия, MVC не "увидит" свойства, которые ему нужны для обновления вашего Dinner
класс.
Есть ли стандартный способ работы с ViewModels, который я пропускаю для этого сценария в MVC3?