2014-10-20 133 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。