2011-01-21 25 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