我很好奇,想知道接近以下情形的最佳方式:如何绑定具有子视图模型属性的ViewModel?
public class LittleThingViewModel
{
public string Id{ get; set; }
public string Name { get; set; }
public string Location { get; set; }
}
public class BigThingViewModel
{
public LittleThingViewModel little1 {get; set; }
public LittleThingViewModel little2 {get; set; }
public string propA {get; set; }
public string propB {get; set; }
public string propC {get; set; }
}
在最初创建我的控制器的动作,我填充两个LittleThingViewModels,将它们分配到一个新的BigThingViewModel,并把它传递给strongly-键入视图。然后我使用EditorFor来渲染BigThing属性A,B和C的编辑控件。
什么是自动将LittleThingViewModels呈现到窗体的最佳技术,当我回发到控制器时,它会自动绑定? (我的目标是只显示名称,并保持隐藏在其他属性)
public ActionResult Create(BigThingViewModel b)
我发现我除了呈现A,B和C的属性两个LittleThing子的ViewModels的每一个人财产POST期间,它成功地结合BigThingViewModel:
Html.DisplayFor(model=>model.little1.Name)
Html.HiddenFor(model=>model.little1.Name)
Html.HiddenFor(model=>model.little1.Id)
Html.HiddenFor(model=>model.little1.Location)
有没有一种技术,可以让我呈现的标签,以及隐藏要素自动,而不必每次都做他们各自明确的?
喜欢的东西:
Html.RenderFor(model=>model.little1)
感谢
我有一个类似的视图模型和我使用的是局部视图来渲染它。它在一个表单中,当我的POST操作在提交时被调用时,我的等价于LittleThingViewModel的属性不会被填充。我是否需要为此实现自定义模型联编程序? – 2011-06-07 19:49:26