2014-10-20 97 views
0

我有一张实验表,对于每个实验,我需要能够将其打开或关闭。我将我的实验列表传递给我的视图,然后迭代它们以创建表格行。绑定表中的单选按钮值

表行创建:

<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”作为输入名字,因为我希望每个组单选按钮,在他们自己的组。

我的问题是,当我提交这个表单时,我应该如何将数据绑定到post模型。我期待在模型创建这样的

实验 ExperimentOne - >选择的单选按钮值 ExperimentTwo - >选择的单选按钮值

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

+0

您如何坚持实验开启或关闭的事实?无论您使用的是哪种实体/财产,都应该在您的表单中使用。 – 2014-10-20 13:56:22

回答

0

由于你正在处理启用/禁用的情况,我会建议使用两个单选按钮复选框。在这两种情况下,你的模型可能是这个样子:

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

而且你会绑定到这个在你看来像这样:

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

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

如果必须使用单选按钮,您的看法是这样的:

<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。