ASP.NET MVC 3 - передача дополнительного параметра вместе с моделью в действие через ajax не работает - PullRequest
3 голосов
/ 28 декабря 2011

Почему в этом сценарии id равно нулю, когда оно достигает действия?

Javascript

$("#ajax-submit").click(function () {
    var data = { setup: $("form").serialize(), id: "12345" };
    $.ajax({
        type: 'POST',
        url: "/MyController/Process",
        data: JSON.stringify(data),
        success: function () { alert("Successful"); },
        dataType: "json"
    });
});

Действие

[HttpPost]
public ActionResult Process(SetupModel setup, string id)
{
    // id is null, setup is not!
}

Если я изменю javascript на:

$.ajax({
    type: 'POST',
    url: "/MyController/Process",
    data: { setup: $("form").serialize(), id: "12345" },
    success: function () { alert("Successful"); },
    dataType: "json"
});

Затем id связывается, а setup нет!

Цель

Я пытаюсь разработать пошаговый мастер, в соответствии с которым вся модель отображается в одном представлении, а элементы div отображаются / скрываются с использованием JavaScript для имитации перехода на следующие / предыдущие страницы.

Однако проблема, с которой я столкнулся, заключается в том, что на одном из шагов необходимо создать список (без отправки всей модели). Для этого я пытаюсь представить данные в том виде, как они есть в тот момент (с дополнительным параметром), обновить модель в контроллере, а затем повторно загрузить представление с обновленной моделью.

Ответы [ 3 ]

3 голосов
/ 28 декабря 2011

Незначительные изменения в вашем коде.

$.ajax({
    type: 'POST',
    url: "/MyController/Process",
    data: $("form").serialize() + '&id=12345',
    success: function() {
        alert("Successful");
    },
    dataType: "json"
});

Это решит проблему

2 голосов
/ 28 декабря 2011

попробуй вот так

$("#ajax-submit").click(function () {

    id= "12345"; //

    var data = { setup: $("form").serialize()};
    $.ajax({
        type: 'POST',
        url: "/MyController/Process/"+id,
        data: JSON.stringify(data),
        success: function () { alert("Successful"); },
        dataType: "json"
    });
});
0 голосов
/ 28 декабря 2011

Вы не можете добавить его как часть строки запроса, потому что маршрут по умолчанию ожидает, что "id" будет частью пути URL:

"{controller} / {action} / {id}"

В вашем вызове $ .ajax URL должен быть "/ MyController / Process /" + id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...