使用ViewModel类时如何调用UpdateModel?

时间:2011-06-18 18:33:06

标签: asp.net-mvc-3

在MVC3中,似乎在视图中显示模型属性的默认方式是这样的:

@Html.DisplayFor(model => model.Title)

如果您的模型与您的对象完全匹配,则此工作正常。但是,如果您定义自定义ViewModel,例如NerdDinner tutorial

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,因此如果您在Action代码中调用UpdateModel,MVC将不会“看到”属性需要查看更新您的Dinner课程。

在MVC3中,是否有一种处理ViewModel的标准方法我忽略了这个场景?

1 个答案:

答案 0 :(得分:5)

对UpdateModel方法使用'prefix'参数

UpdateModel(model.Dinner,“Dinner”);

如果您只需要更新指定的属性 - 请使用类似这样的内容

UpdateModel(model.Dinner,“Dinner”,new [] {“Title”});