我在做什么呢。我有一个基本表,每行末尾有一个按钮,用于“选择”该行以进行进一步操作。我的动作方法有两个简单的参数,我将它们称为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>
答案 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" />
}