Хорошо, я видел тонны вопросов отвечал по этому вопросу, но ни один из ответов есть на самом деле работал для меня, вот мой AJAX:MVC Отправить список через AJAX
$.ajax({
url: "/FilterSessions/GetFilterSession",
type: "GET",
dataType: "json",
data: jsonFilters,
traditional: true,
success: function (response) {
//Haha, it's never entering here. not really.
}
});
вар «jsonFilters» содержит массив со следующими данными:
[0] = { Path: "Test", Name: "More testing", Value: "Test Value" },
[1] = { Path: "Test", Name: "More testing", Value: "Test Value" }
И это мой контроллер:
public ActionResult GetFilterSession(List<FilterSessionModel> jsonFilters)
{
//Do things
return Json(false, JsonRequestBehavior.AllowGet);
}
jsonFilters всегда остается пустой ... Я также попытался добавить contentType: "application/json; charset=utf-8"
на вызов AJAX ... но это не делает ничего
Наконец, класс FilterSessionModel
структурирована следующим образом:
public class FilterSessionModel
{
public string Path { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
Все идеи что я могу потерять или что может произойти?
Вещи я пытался до сих пор:
не Установка «традиционны: правда», установка «CONTENTTYPE», используя JSON.stringify и пытается принять строку в контроллер MVC (не годен)
UPDATE: Благодаря ответ ниже я понял, что не хватало, чтобы отправить через данные с Id парам так:
data: "{param1ID:"+ param1Val+"}"
Спасибо за ваш ответ, к сожалению, не работает либо; и, кроме того, вы действительно можете использовать пользовательские классы в качестве параметров в контроллерах MVC. MVC автоматически отображает их. Кроме того, я уверен, что я передаю действительные данные - это то же самое, что показано выше. –
Вы, очевидно, добираетесь до своего контроллера, если видите, что данные равны нулю. Я бы попробовал просто передать строку, простую строку и посмотреть, пройдет ли она, если это так, то у вас наверняка возникнут проблемы с вашим вызовом ajax, я добавлю что-то выше в ответ. –
Интересно, что если я передаю строку, контроллер все еще не получает ее. (Я не забыл изменить контроллер, чтобы получить строку) ... Это довольно странно –