ASP.Net MVC Json Результат: параметры переданы методу контроллера - PullRequest
3 голосов
/ 18 марта 2009

У меня проблема с получением метода контроллера, который возвращает JsonResult для приема параметров, переданных через метод getQSON JQuery.

Код, над которым я работаю, работает нормально, когда второй параметр ("data") вызова метода getJSON имеет значение null. Но когда я пытаюсь передать туда значение, создается впечатление, что метод контроллера никогда даже не вызывается.

В этом примере я просто хочу использовать целое число. Вызов getJSON, который отлично работает, выглядит следующим образом:

$.getJSON(”/News/ListNewsJson/”, null, ListNews_OnReturn);

Метод контроллера такой:

public JsonResult ListNewsJson(int? id)
{
    …
    return Json(toReturn);
}

Помещая точку останова в метод ListNewsJson, я вижу, что этот метод вызывается, когда параметр данных getJSON равен нулю, но когда я заменяю его значением, например, 3:

$.getJSON(”/News/ListNewsJson/”, 3, ListNews_OnReturn);

… метод / точка останова контроллера никогда не срабатывает. Есть идеи, что я делаю не так?

Я должен также упомянуть, что метод контроллера работает нормально, если я вручную перехожу по адресу через мой браузер ("/News/ListNewsJson/3").

Ответы [ 2 ]

3 голосов
/ 18 марта 2009

getJSON ожидает набор пар ключ / значение, а не пустое значение, поэтому вам нужно будет использовать {id: 3} для передачи значения id. К сожалению это будет превращено в / News / ListNewsJson /? Id = 3, что не то, что вы хотите. Я предлагаю просто добавить значение в URL, чтобы построить его в форме маршрута. Я также предполагаю, что значение на самом деле происходит от переменной, поэтому я написал ее в таком виде. Если возможно быть нулевым, вам нужно сделать что-то более сложное, чтобы сформулировать URL, чтобы он имел смысл.

var id = '3';
$.getJSON(”/News/ListNewsJson/” + id, ListNews_OnReturn);
1 голос
/ 22 марта 2010

я знаю, что это более старая тема, но почему вы не используете помощник MVC Url.Action ()? Это позволит убедиться, что ваш маршрут правильный.

$.getJSON('<%=Url.Action("ListNewsJson", "News") %>/' + id, ListNews_OnReturn);

Конечно, если значение id происходит из ViewData, вы можете использовать 3-й параметр вспомогательного метода Url.Action () для передачи анонимного типа со свойством id, и MVC создаст нужный URL-адрес. В противном случае, объедините его в javascript, если значение исходит из функции javascript.

НТН

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