绑定表中的单选按钮值

时间:2014-10-20 12:59:08

标签: c# asp.net-mvc

我有一个实验表,对于每个实验,我需要能够打开或关闭它。我将我的实验列表传递给我的视图,并迭代它们以创建表格行。

表行创建:

<tr>
    <td>@experiment.ExperimentId</td>
    <td>@experiment.ExperimentName</td>
    <td>@experiment.StartDate</td>

    //radio button code goes here
</tr>

我决定使用单选按钮助手为每个实验生成两个单选按钮。

<td>@Html.RadioButton(experiment.ExperimentName, true, false)ON @Html.RadioButton(experiment.ExperimentName, false, false)OFF</td>

我使用'ExperimentName'作为输入名称,因为我希望每组单选按钮都在他们自己的组中。

我的问题是,当我提交此表单时,我应该如何将数据绑定到帖子模型。我想在模型

中创建这样的东西

实验 ExperimentOne - &gt; 选择的radiobutton值 ExperimentTwo - &gt; 选择的radiobutton值

我假设我需要创建一个Dictionary对象,但我不确定如何将名称和所选值绑定到此。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

由于您正在处理启用/禁用的情况,我建议使用两个单选按钮上的复选框。在任何一种情况下,您的模型可能如下所示:

public class ExperimentsViewModel
{
    // other properties
    public IDictionary<int, bool> ExperimentStatus { get; set; }
}

你会在你的视图中绑定到这个:

<td>@Html.CheckBox("ExperimentStatus[0]", Model.ExperimentStatus[0]) Enabled</td>

模型绑定器将字典视为数组或列表; use可以使用索引(在这种情况下为键)绑定到一个值。您也可以使用字符串键而不是整数。

如果必须使用单选按钮,您的视图将如下所示:

<td>
    @Html.RadioButton("ExperimentStatus[0]", true, Model.ExperimentStatus[0], new {id = "ExperimentStatus_0_ON"})@:ON 
    @Html.RadioButton("ExperimentStatus[0]", false, Model.ExperimentStatus[0], new {id = "ExperimentStatus_0_OFF"})@:OFF
</td>

您必须手动包含这样的id属性,否则ON和OFF输入将具有相同的ID,这是无效的HTML。