Проблемы с отправкой данных JSON на контроллер asp.net MVC - PullRequest
0 голосов
/ 23 февраля 2012

В ASP.NET MVC 3 мне не повезло, когда я пытался отправить данные JSON на мой контроллер.

Я перебираю список и генерирую объекты JSON из элементов, а затем отправляю их вместе с моим параметром запроса:

$.each(addedIngredients.find('li'), function () {
    ingredients[count] = {
        ID: $(this).attr('id').split('_')[1],
        Name: $(this).attr('id').split('_')[0]
    };
    count++;
});

request = $.ajax({
    url: '/Ingredients/SearchIngredients',
    data: {
        q: q,
        ingredients: ingredients
    },
    dataType: 'json',
    type: 'POST',
    success: function (result) {
             //Code omitted
    },
    error: function () {
             //Code omitted
    }
});

На контроллере у меня есть

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult SearchIngredients(string q, JSONIngredient[] ingredients)
    {
        //Initialise model
        List<JSONIngredient> model = new List<JSONIngredient>();

        //Add items to list
        ir.GetIngredients(q).ToList().ForEach(i => model.Add(new JSONIngredient(i)));

        //Return model as JSON object
        return this.Json(model);
    }

Где JSONingredient -

public class JSONIngredient
{
    public int ID { get; set; }

    public string Name { get; set; }

    public JSONIngredient()
    {
    }

    public JSONIngredient(Ingredient Ingredient)
    {
        this.ID = Ingredient.ID;
        this.Name = Ingredient.Name;
    }
}

Который я придумал, потому что думал, что моя обычная модель с дополнительными свойствами, которых нет в JSON, вызывала проблему, но я бы подумал, что если бы она работала, она бы работала с моей нормальной моделью ...

Я думаю, что, возможно, формат, в котором я отправляю данные, неверен. Изучение запроса в firefox show:

Parametersapplication / х-WWW-форм-urlencoded ингредиенты [0] [ID] 4 ингредиенты [0] [Имя] Вода q sug

Источник

д = SuG & ингредиенты,% 5B0% 5D% 5BName% 5D = Вода и ингредиенты% 5B0% 5D% 5BID% 5D = 4

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Позвоните JSON.stringify вокруг ваших данных.См. Здесь пример: Отправка массива объектов через JSON в ASP.Net MVC3

Попробуйте сначала просто «q», а затем просто «ингредиенты»

0 голосов
/ 23 февраля 2012

Поработав с этим некоторое время и попробовав это, я наконец-то начал работать. Как я и подозревал, формат данных был неверным. Вместо отправки чистого объекта JSON

data: {
    q: q,
    ingredients: ingredients
}

Мне нужно было отправить строковый объект:

JSON.stringify({ q: q, ingredients: ingredients})

Просто, когда ты это знаешь.

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