我的模型中有一个动态创建的列表。
我遍历此列表并为列表中的每个项目创建单选按钮。
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
为空,无论其他选择是什么。
模型绑定时是否可以创建列表?我不介意第一项是否为空,我只是不想在第一项为空时丢失所有项目。
答案 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有更详细的解释