如何在MVC3的回发上获得视图模型上的子集合



Phil Haack有一篇文章描述了如何设置默认的模型绑定器,以便在post back上绑定到集合:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

我遇到的问题是,我不只是试图将集合发送回控制器动作,而是一个具有集合的ViewModel。

我有一个类,基本上是这样的:

public class MyViewModel
{
public int IncidentNumber { get; set; }
public string StoreId { get; set; }
public string RepId { get; set; }
public string OrderStatus { get; set; }
public CustomerViewModel Customer { get; set;
//... other properties and SelectLists for binding
public IEnumerable<OrderItemViewModel> OrderItemViewModels { get; set; }

我实际上可以在回发中获得CustomerViewModel数据,但是OrderItemViewModels列表是空的。我怎么才能拿回来?菲尔的文章没有帮助。

我有一个类似的问题,这里MVC绑定到模型与列表属性忽略其他属性,这是通过使用以下代码在视图

解决
<div class="editor-field">
@for (int i = 0; i < Model.MyCollection.Count(); i++)
{
    @Html.HiddenFor(m => m.MyCollection[i].Id)
    @Html.HiddenFor(m => m.MyCollection[i].ParentId)
    @Html.HiddenFor(m => m.MyCollection[i].Name)
    @Html.TextBoxFor(m => m.MyCollection[i].Value)
}
</div>
使用编辑器模板:
@model MyViewModel
@using (Html.BeginForm())
{
    ... some input fields 
    @Html.EditorFor(x => x.OrderItemViewModels)
    <input type="submit" value="OK" />
}

,然后在相应的编辑器模板中,该模板将自动为OrderItemViewModels集合(~/Views/Shared/EditorTemplates/OrderItemViewModels.cshtml)的每个元素呈现:

@model OrderItemViewModels
<div>
    @Html.LabelFor(x => x.Prop1)
    @Html.EditorForFor(x => x.Prop1)
</div>
<div>
    @Html.LabelFor(x => x.Prop2)
    @Html.EditorForFor(x => x.Prop2)
</div>
...

相关内容

  • 没有找到相关文章

最新更新