我使用MVC5
现状:我认为通过Person类的一个列表上循环,其中属性如下:
int Id
string Name
string City
string ChosenText
List<string> SomeTextList
字符串的这份名单将被随机生成的字符串。
同时通过列表迭代所有SomeTextList应显示为单选按钮。 因此,对于每个人都在那里是:
- 一个文本框的名字
- 一个文本框的城市
- 对于SomeTextList单选按钮的组
该代码是:
@foreach (var item in Model)
{
@Html.EditorFor(modelItem => item.Name)
<br />
@Html.EditorFor(modelItem => item.Name)
@foreach (var ans in item.SomeTextList)
{
@Html.RadioButtonFor(modelItem => item.ChosenText, "ans")@Html.Label(ans)
}
}
问题:对于所有的人的单选按钮为一组,即,我可以从所有的人列表中只选择一个自由文本单选按钮。
目标:每个人我应该能够选择一个单选按钮。
你需要使用for
一个集合(而不是在循环中产生控制foreach
循环产生重复的name
和ID
属性,也不会回发到集合)
因为每一个单选按钮要生成相同的名称属性<input type="radio" name="ChosenText" ... />
它们都属于同一组只允许一个将被选择。
for(int i = 0; i < Model.Count; i++)
{
@Html.EditorFor(m => m[i].Name)
<br />
@Html.EditorFor(m => m[i].City)
@foreach (var ans in Model[i].SomeTextList)
{
<label>
@Html.RadioButtonFor(m => m[i].ChosenText, ans)
<span>@ans</span>
</label>
}
}
这将生成(用于单选按钮)
<input type="radio" name="[0].ChosenText" value="abc" />
<input type="radio" name="[0].ChosenText" value="xyz" />
.....
<input type="radio" name="[1].ChosenText" value="abc" />
<input type="radio" name="[1].ChosenText" value="xyz" />