没有选择第一个项目的列表在绑定期间未创建

时间:2014-11-13 21:00:40

标签: c# asp.net-mvc model

我的模型中有一个动态创建的列表。

我遍历此列表并为列表中的每个项目创建单选按钮。

public class Model
{
    public List<string> Options { get; set; }
    public List<string> SelectedValues { get; set; }
}

在视图中我正在做这个

@for (var i = 0; i < Model.SelectedValues.Count; i++)
{
    <div>
        @foreach (var option in Model.Options)
        {
            @Html.RadioButtonFor(m => m.SelectedValues[i], option) 
        }
    </div>
}

(假设Model.Options填充了有意义的内容)。

我的问题是,如果没有为列表中的第一项选择单选按钮(Model.SelectedValues[0]),则表单发布时SelectedValues为空,无论其他选择是什么。

模型绑定时是否可以创建列表?我不介意第一项是否为空,我只是不想在第一项为空时丢失所有项目。

1 个答案:

答案 0 :(得分:3)

您可以添加隐藏输入以指定集合的​​索引器,以便绑定非顺序索引

@for (var i = 0; i < Model.SelectedValues.Count; i++)
{
  <div>
    @foreach (var option in Model.Options)
    {
      @Html.RadioButtonFor(m => m.SelectedValues[i], option) 
    }
    <input type="hidden" name="SelectedValues.Index value="@i" />
  </div>
}

Refer this article有更详细的解释