DefaultModelBinder和表行中值的绑定操作参数

时间:2011-01-21 20:12:05

标签: asp.net-mvc-3

我在做什么呢。我有一个基本表,每行末尾有一个按钮,用于“选择”该行以进行进一步操作。我的动作方法有两个简单的参数,我将它们称为id1和id2:

public ActionResult DoSomething(int id1,int id2)

id1将从表范围之外的隐藏表单字段绑定,这样可以正常工作。

id2需要来自表中单个行的隐藏列,具体取决于单击的按钮,表示需要进一步处理的行。有意义吗?

当表单回发到action方法时,id1设置完美,没问题,但id2始终是第1行隐藏列的值。如何检测/ make DefaultModelBinder从行中提取隐藏列值从哪个按钮点击?

感谢您的帮助,因为我正在积极尝试解决这个问题。


以下是每行呈现的隐藏表列,我想从单击按钮的行中的帖子上捕获它的值:

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

1 个答案:

答案 0 :(得分: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" />
}