Добавьте значения формы через jQuery и POST к методу контроллера - PullRequest
0 голосов
/ 12 января 2012

У меня есть таблица с разным.данные.В каждой строке есть флажок.Эта таблица НЕ в форме.Я хочу использовать 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 демонстрирует нулевую активность.Значения правильно выбираются в соответствии с выполнением инструкции jQuery (где я получаю значения, которые мне нужны из строк таблицы) в консоли FB.

Любые идеи ???

ОБНОВЛЕНИЕ:

Согласно предложению Правина, я попытался использовать скрытое поле формы, но проблема остается ...

Добавил это в форму:

@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 не происходит.Ничего, надда, молния.

Ответы [ 2 ]

1 голос
/ 12 января 2012

Попробуйте изменить форму следующим образом:

@using(Html.BeginForm("TheAction", "TheController", FormMethod.Post, new { @id = "some-form" }))
{
    <input id="some-button" type="button" value="Do Stuff" />
}
0 голосов
/ 12 января 2012

Вышеупомянутый подход работает, что бы все значения, к которым вы хотите получить доступ, вы могли поместить их в скрытые переменные.

@using(Html.BeginForm("TheAction", "TheController", FormMethod.Post, new { @id = "some-form" })) {     <input id="some-button" type="button" value="Do Stuff" />
  @Html.HiddenFor................
 } 
...