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