2011-01-21 24 views
0

我正在做的是這樣的。我有一個基本的表格,每行末尾有一個按鈕,用於「選擇」該行以進一步操作。我的操作方法有兩個簡單的參數,我會ID1打電話給他們,ID2,故:DefaultModelBinder和來自表格行中值的綁定動作參數

公衆的ActionResult DoSomething的(INT ID1,詮釋ID2)

ID1將從一個隱藏的表單字段的約束範圍之內表,這工作正常。

id2需要來自表中單個行的隱藏列,具體取決於點擊的按鈕代表需要進一步處理的行。合理?

當表單回發到操作方法時,id1設置完美,沒問題,但id2始終是第1行隱藏列的值。如何檢測/使DefaultModelBinder將隱藏列值從正在點擊按鈕的行?

感謝您的協助,因爲我正在積極嘗試弄清楚這一點。


這裏是每行呈現隱藏的表列,我想捕捉它從該行的崗位價值從被點擊的按鈕:

<td style="display:none;">@Html.Hidden("id2", viewModel.id2)</td> 

回答

0

你可以使用簡單的超鏈接而不是每行的表單。就像這樣:

@Html.ActionLink("link text", "DoSomething", "SomeController", new { 
    id1 = viewModel.id1, id2 = viewModel.id2 
}, null) 

其假設默認路由應該生成以下鏈接:

/somecontroller/DoSomething?id1=123&id2=456 

,當你點擊就可以了DoSomething行動將正確的參數來調用。


如果你想做到這一點與POST,你需要多種形式,每行一個:

@using (Html.BeginForm("DoSomething", "somecontroller")) 
{ 
    @Html.Hidden("id1", viewModel.id1) 
    @Html.Hidden("id2", viewModel.id2) 
    <input type="submit" value="OK" /> 
} 
+0

哇傢伙,弗裏克!爲什麼我沒有想到這一點。大聲笑 我沒有使用多種形式,但我的上帝,這種解決方案剛剛完全滑落我。謝謝! – slimflem 2011-01-21 20:33:00