Передача нескольких объектов в контроллер с помощью ajax в ASP.NET MVC - PullRequest
0 голосов
/ 06 января 2012

Я работаю над проектом ASP.NET MVC.Я должен передать два параметра для действия в моем контроллере.первый - сериализуемый объект, а второй - целое число.Первый раз я попытался передать только один параметр, сериализуемый объект.Нет проблем, , но когда я добавляю второй параметр, сериализуемый объект не доставляется (нулевое значение) , но целочисленный параметр доставлен успешно.

это мое действие выглядит:

    [HttpPost]
    public bool MyAction(MySerializableObject myData, int intParameter)
    {..}

и вот как я пытаюсь передать параметры:

 $('#submit-button').click(function () {        
    var formData = $("#MyForm").serialize();
    var posturl = '/MyController/MyAction';
    var retUrl = '/MyCOntroller/SomeWhere';
    ...
    $.post(posturl, { myData: formData, intParameter: '5005' }, function (result) {
        if (result == 'True') {
            location.href = retUrl;
        }
        else {
            alert('failed');
        }
    });
});

Кто-нибудь может объяснить это?как это может случиться и как решить проблему?

спасибо.

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Вы можете использовать следующий плагин (serializeObject) вместо .serialize:

var formData = $('#MyForm').serializeObject();
// add some data to the request that was not present in the form
formData['intParameter'] = 5005;

var posturl = '/MyController/MyAction';
var retUrl = '/MyCOntroller/SomeWhere';
...
$.post(posturl, formData, function (result) {
    if (result == 'True') {
        location.href = retUrl;
    }
    else {
        alert('failed');
    }
});
0 голосов
/ 06 января 2012

это может быть немного длинным, но вы пытались поменять местами порядок параметров (IE public bool MyAction (int intParameter, MySerializableObject myData) Причина, по которой я спрашиваю, может заключаться в том, что сериализация на стороне клиента не работает совершенно верно.

Если не лучший вариант, посмотрите, что в действительности публикуется на сервере. Откройте вкладку firebugs net или аналогичную в webkit и посмотрите, что на самом деле возвращается на сервер.

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