我有部分看法:

@foreach (var checkbox in Model.TimeLimit)
{
    <div class="editor-label">
    @Html.Label(checkbox.Name)
    @Html.Hidden(checkbox.Id)
    @Html.CheckBoxFor(c=>checkbox.IsChecked)
    </div>
}


我有一个ParentViewModel包含:

public IEnumerable<URLTimeLimitViewModel> TimeLimit { get; set; }


和URlTimelimitViewmodel包含:

public string Name { get; set; }
public int Id { get; set; }
public bool IsChecked { get; set; }


当我调用提交按钮时,ParentViewModel中的Timelimit返回null,为什么?

最佳答案

您需要更改循环-模型绑定器无法找出将发布值绑定到以下内容的方法:

@for (var i = 0; i < Model.TimeLimit.Count; i++)
{
  <div class="editor-label">
    @Html.Label(Model.TimeLimit[i].Name)
    @Html.Hidden(Model.TimeLimit[i].Id)
    @Html.CheckBoxFor(c=>Model.TimeLimit[i].IsChecked)
  </div>
}


您还需要将TimeLimit属性声明为IEnumerable之外的其他内容,我建议您使用通用列表(LINQs ToList方法非常方便!):

public List<URlTimelimitViewModel> TimeLimit { get; set; }

09-07 11:06