Asp.net 对于模型列表中的所有项目,所有单选按钮都分组在一起
我正在使用MVC5 情况: 我的视图遍历Person类的列表,其中的属性如下:Asp.net 对于模型列表中的所有项目,所有单选按钮都分组在一起,asp.net,.net,c#-4.0,asp.net-mvc-5,Asp.net,.net,C# 4.0,Asp.net Mvc 5,我正在使用MVC5 情况: 我的视图遍历Person类的列表,其中的属性如下: int Id string Name string City string ChosenText List<string> SomeTextList 此字符串列表将是随机生成的字符串 在遍历列表时,所有SomeTextList都应显示为单选按钮。因此,每个人都有: 一个用于名称的文本框 一个城市文本框 SomeTextList的单选按钮组 代码是: @foreach (var item in Model
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循环,它生成重复的名称和ID属性,并且不会发回集合
因为生成相同名称属性的每个单选按钮都属于同一组,因此只能选择一个
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" />
编辑答案,为您添加更多解释: