我有一张带有misc的桌子。数据。每行都有一个复选框。此表格不在表格中。我想使用jQuery从每个“已检查的行”中获取值,将这些值添加到表单中,然后通过传统的POST发布到我的控制器方法。
我抓住了我需要的值:
$('#some-button').click(function(){
var theValues = [];
$('#some-table tbody tr td:first-child input:checkbox').each(function(){
if(this.checked){
theValues.push($(this).parent().next().val());
}
});
$('#some-form').val(theValues.serialize()).submit();
});
视图中的表单如下所示:
@using(Html.BeginForm("TheAction", "TheController",
FormMethod.Post, new { @id = "some-form" }))
{
<input id="some-button" type="button" value="Do Stuff" />
}
我的控制器方法如下所示:
[HttpPost]
public ActionResult TheAction(IEnumerable<string> values)
{
// Do stuff with values...
return RedirectToAction("SomewhereElse");
}
问题是,没有任何反应。从字面上看,Firebug显示零活动正在进行中。根据在FB控制台中运行jQuery语句(我从表行中获取我想要的值),可以正确地获取这些值。
任何想法???
更新
根据praveen的建议,我尝试使用隐藏的表单字段,但问题仍然存在......
将此添加到表单中:
@Html.Hidden("values", new { @id = "the-values" })
并将我的JavaScript更新为:
$('#some-button').click(function(){
var theValues = [];
$('#some-table tbody td td:first-child input:checkbox').each(function(){
if(this.checked){
theValues.push($(this).parent().next().val())
}
});
$('#the-values').val(theValues);
$('#some-form').submit();
});
同样,问题仍然存在。 JS'click'事件正在触发,但没有发生POST。没什么,nadda,拉链。
答案 0 :(得分:1)
尝试更改您的表单:
@using(Html.BeginForm("TheAction", "TheController", FormMethod.Post, new { @id = "some-form" }))
{
<input id="some-button" type="button" value="Do Stuff" />
}
答案 1 :(得分:0)
上述方法有效,您想要访问的值可以将它们放入隐藏变量中。
@using(Html.BeginForm("TheAction", "TheController", FormMethod.Post, new { @id = "some-form" })) { <input id="some-button" type="button" value="Do Stuff" />
@Html.HiddenFor................
}