我在每次迭代时都有一个带RadioButton
的for循环。我的问题是,一旦我验证了表单(如何检索它们的值?),我不知道如何区分每一个RadioButton
。我有一个打印机型号:
public class Printer{
public int id{ get; get;}
public string printerName { get; set; }
}
它本身是另一个模型的一部分:
public class FinalSiteModel
{
public string name{ get; set; }
public List<Printer> printers{ get; set; }
public bool selected { get; set; }
}
然后我将它传递给视图:
for(var i = 0; i < Model.printers.Count() ; i++)
{
@Html.RadioButtonFor(m => m.selected, new { Name = "groupRadio"});
@Html.Label(Model.printers[i].printerName);
}
我认为我编写RadioButton的方式有问题。我最初在selected
内部使用了布尔PrinterModel
,但我的问题来自于自从我使用以来无线电按钮没有分组的事实
@Html.RadioButtonFor(m => m.printers[i].selected, new { Name = "groupRadio"});
并且这一位:m => m.printers[i].selected
为每个单选按钮创建了一个不同的名称,因此当我同时检查几个单选按钮时,我不想这样做。
我猜我应该在RadioButtonFor
添加一个参数?
答案 0 :(得分:2)
您的单选按钮需要一个值才能绑定到selected
属性。但是,该属性必须为int
,而不是bool
public class FinalSiteModel
{
...
public List<Printer> Printers { get; set; }
public int SelectedPrinter { get; set; }
}
然后在视图中
foreach(var printer in Model.Printers)
{
<label>
@Html.RadioButtonFor(m => m.SelectedPrinter, printer.Id, new { id = "" })
<span>@printer.Name</span>
</label>
}
请注意,RadioButtonFor()
的第二个参数会根据value
的{{1}}属性添加Id
属性,Printer
会移除new { id = "" }
id
由于该方法生成重复项
当您发布表单时,SelectedPrinter
的值现在将包含所选Id
的{{1}}。
作为旁注,请勿尝试使用Printer
更改name
属性 - 它不会绑定到您的模型。