Проблема с Json stringify

#jquery #asp.net-mvc

#jquery #asp.net-mvc

Вопрос:

 var User = new Object();

        User.Id = 0;
        User.Username = $("#username").val();
        User.Password = $("#password").val();

        var jsonText = JSON.stringify(User);


        jsonText = "{"User" : "   JSON.stringify(User)   "}";
        alert(jsonText);

 $.ajax({
            url: '/Main/Submit/',
            type: 'POST',
            dataType: 'json',
            data: jsonText,
            contentType: 'application/json',
            success: function (data) {
                // get the result and do some magic with it
                var message = data.Message;
                $("#resultMessage").html(message);
            }
        });


public ActionResult Submit(User User)
           {
           }
 

В функции MVC объект User не содержит значений.

Комментарии:

1. Пожалуйста, как выглядит сигнатура метода MVC?

Ответ №1:

Вам не нужно преобразовывать ваш объект в строку JSON, вы можете просто отправить объект. Если User это ваше имя параметра, должно сработать следующее (я изменил часть синтаксиса, чтобы немного упростить его).

 var User = {
    Id: 0,
    Username:  $("#username").val(),
    Password: $("#password").val()
};

$.post('<%= Url.Action("Submit", "Main") %>', { User: User }, function (data) {
    // get the result and do some magic with it
    var message = data.Message;
    $("#resultMessage").html(message);
});
 

Комментарии:

1. Ну, помните, что MVC работает, используя отражение для привязки свойств. Имена свойств вашего пользовательского объекта должны быть в точности Id , Username , и Password . Выполняется ли вообще действие вашего контроллера?

2. Да, выполняется действие контроллера, но значения переменных равны нулю. Имена параметров в точности совпадают с регистром.

3. @sly_Chandan: Тогда, вероятно, проблема с типом данных или типом контента. Всякий раз, когда я выполняю jQuery AJAX с помощью MVC, я делаю это очень просто и использую $.get() $.post() ярлыки и . Я обновил свой ответ. Также обратите внимание, что я удалил жестко запрограммированный маршрут действий — вы должны позволить MVC выполнить эту работу за вас.