2017-08-23 17 views
0

私は各繰り返しでRadioButtonのforループを持っています。私の問題は、一度私のフォーム(それらの値を取得する方法)を検証したら、すべての単一のものを区別する方法がわからないということです。ラジオボタンを区別するにはどうすればいいですか?

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); 
} 

私は何かが間違っていると思う私は、プリンタのモデルを持っています私は自分のラジオボタンを書いた方法で。私は当初PrinterModelの内側ブールselectedを使用しますが、私は

@Html.RadioButtonFor(m => m.printers[i].selected, new { Name = "groupRadio"}); 

と、このビットを使用するので、私の問題は、ラジオボタンがグループなかったという事実から来た:m => m.printers[i].selectedをするとき、したがって、各ラジオボタンに別の名前を作成しました私はいくつかのラジオボタンを同時にチェックします。

RadioButtonForにパラメータを追加する必要がありますか?

答えて

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()の第二パラメータはPrinterIdプロパティに基づいてvalue属性を追加し、new { id = "" }メソッドが重複を生成するため無効なid属性を削除します

SelectedPrinterの値には、フォームをPOSTするときに、のIdが選択されるようになりました。

name属性をnew { Name = "groupRadio" }を使用して変更しないでください。あなたのモデルにはバインドされません。

+0

あなたはいつもスティーブンの周りにいるのは良いことです。もう一度感謝します:) –

関連する問題