通过jQuery添加表单值,POST到控制器方法

时间:2012-01-12 15:51:06

标签: c# jquery .net asp.net-mvc-3 post

我有一张带有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,拉链。

2 个答案:

答案 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................
 }