在MVC3中,似乎在视图中显示模型属性的默认方式如下:
@Html.DisplayFor(model => model.Title)
Run Code Online (Sandbox Code Playgroud)
如果您的模型与您的对象完全匹配,这可以正常工 但是,如果您定义自定义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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的DisplayFor代码看起来像:
@Html.DisplayFor(model => model.Dinner.Title)
Run Code Online (Sandbox Code Playgroud)
这意味着表单项的名称Dinner.Title不是公正的Title,因此如果您调用UpdateModelAction代码,MVC将不会"看到"更新Dinner类所需的属性.
有没有一种处理ViewModel的标准方法,我在MVC3中忽略了这个场景?
对UpdateModel方法使用'prefix'参数
UpdateModel(model.Dinner,"Dinner");
如果您只需要更新指定的属性 - 请使用类似的东西
UpdateModel(model.Dinner,"Dinner",new [] {"Title"});
| 归档时间: |
|
| 查看次数: |
1275 次 |
| 最近记录: |