JQuery post array - ASP.Net MVC 4
Сегодня я потратил 8 часов, пытаясь понять это. Я просмотрел множество решений, но не могу получить одинаковые результаты. У меня есть догадка, что все имеет отношение к тому, чтобы быть относительно новым для ASP.Net.
Вот последний вопрос, который я пробовал имитировать без везения.
qaru.site/info/324613/...
Как разместить массив сложных объектов с помощью JSON, jQuery для ASP.NET MVC Controller?
Основные сведения о проблеме:
У меня есть массив объектов json, которые я хотел бы передать моему контроллеру. Когда я передаю данные, которые он показывает, можно сказать, например, 3 элемента, но их значения не передаются или он просто показывает, что ничего не передано. Firebug показывает, что он прошел его, поэтому я предполагаю, что что-то не настроено правильно и не позволяет ему правильно настроить эту переменную на стороне С#.
Я пробовал несколько вещей и плохо перечислял их ниже:
Настройка 1:
Я попытался насмехаться над тем, что видел во второй ссылке:
$.ajax({
type: 'Post',
cache: false,
url: '/Workflow/Home/UpdateStepPositions',
data: { 'steps': ['1','2','3'] },
async: false,
success: function (data) {
console.debug(data);
},
error: function (data) {
console.debug(data);
}
});
Controller
[HttpPost]
public ActionResult UpdateStepPositions(string[] steps){
var bresults = new {
Success = false,
Message = "Unable to update step positions."
};
return Json(bresults);
}
Я даже не мог заставить эту простую настройку работать. Она добирается до функции и показывает, что ничего не прошло.
Настройка 2:
list = new Array();
list.push({ "step": 1, "position": 1 });
list.push({ "step": 2, "position": 2 });
list.push({ "step": 3, "position": 3 });
$.ajax({
type: 'Post',
cache: false,
url: '/Workflow/Home/UpdateStepPositions',
data: JSON.stringify({ 'steps': list }),
async: false,
success: function (data) {
console.debug(data);
},
error: function (data) {
console.debug(data);
}
});
Controller
[HttpPost]
public ActionResult UpdateStepPositions(List<UpdatedSteps> steps){
var bresults = new {
Success = false,
Message = "Unable to update step positions."
};
return Json(bresults);
}
Class
public class UpdatedSteps {
public string Step { get; set; }
public string Position { get; set; }
}
Может ли кто-нибудь осветить то, что мне не хватает, или указать мне в правильном направлении? Надеюсь, что-то простое и просто ошибка новичка!
Ответы
Ответ 1
MVC определяет тип данных, которые он получает по типу contentType. Вот рабочий пример:
$(function () {
$.ajax({
type: 'Post',
dataType: 'json',
url: '/Workflow/Home/UpdateStepPositions',
data: JSON.stringify({ steps: ['1', '2', '3'] }),
contentType: 'application/json; charset=utf-8',
async: false,
success: function (data) {
console.debug(data);
},
error: function (data) {
console.debug(data);
}
});
});
Теперь все нормально с запросом:
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
и ответ:
Content-Type: application/json; charset=utf-8