コントロールを動的に表示しています。ラジオ ボタンを除くすべてのコントロールを適切な値で表示できます。ラジオ ボタン リストは正しくレンダリングされていますが、その値はチェックされていません。
foreach (var radio in item.RadioButtonList)
{
//Option 1
@Html.RadioButton(radio.Text, radio.Checked) @: @radio.Text
//Option 2
@Html.RadioButton(name: radio.Text, value: radio.Checked, isChecked: radio.Checked)*@
//Option 3
<input type="radio" value="radio.Text" checked="@radio.Checked"/> @: @radio.Text
}
私のモデルは
public class FromElement
{
public List<CBRBControl> RadioButtonList { get; set; }
}
public class CBRBControl
{
public string Text { get; set; }
public bool Checked { get; set; }
public string IsRadioChecked { get; set; }
}
私のコントローラー
public ActionResult FormDetails(int formID)
{
if (form.Field_Type_Name == "Radio Button")
{
radioList = new List<CBRBControl>();
// For option 1 and 2
radioList.Add(new CBRBControl
{
Checked = true,
Text = "Radio Test 1"
});
radioList.Add(new CBRBControl
{
Checked = false,
Text = "Radio Test 2"
});
// For option 3
radioList.Add(new CBRBControl
{
IsRadioChecked = "checked",
Text = "Radio Test 1"
});
radioList.Add(new CBRBControl
{
Text = "Radio Test 2"
});
form.RadioButtonList = radioList;
}
そこの方法を使ってこれを動かしてみました。オプション 1 と 2 では、リスト内のラジオ ボタンはどれもチェックされず、オプション 3 ではすべてのラジオ ボタンが選択されています。
オプション 1 の場合、生成される html は次のとおりです。
<input id="Radio_Test_1" name="Radio Test 1" type="radio" value="True"> Radio Test 1
<input id="Radio_Test_2" name="Radio Test 2" type="radio" value="False"> Radio Test 2
オプション 2 の場合、生成される html は
<input checked="checked" id="Radio_Test_1" name="Radio Test 1" type="radio" value="True"> Radio Test 1
<input id="Radio_Test_2" name="Radio Test 2" type="radio" value="False"> Radio Test 2
オプション 3 の場合、生成される html は次のとおりです。
<input type="radio" value="radio.Text" checked="checked"> Radio Test 1
<input type="radio" value="radio.Text" checked=""> Radio Test 2