#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 выполнить эту работу за вас.