WebMethod не стреляет - проблема JSON? - PullRequest
1 голос
/ 07 мая 2011

Я вызываю WebMethod (ASP.NET) через AJAX (jQuery). Если я создаю версию вызова без параметров, он вызывает нормально. Когда я передаю свой JSON в реальный метод, он не вызывается (точка останова не получает удар). Вот пример JSON, который я передаю (массив с 2 объектами):

{
   "bills":[
      "{ 'Id': '1', 'Vote': 'true' },{ 'Id': '2', 'Vote': 'false' }"
   ]
}

Вот подпись WebMethod:

[WebMethod]
public static void LinkBillsToCandidate(List<JsonBillForCandidate> bills)

Вот объект .NET:

public class JsonBillForCandidate
{
    public int Id { get; set; }
    public bool? Vote { get; set; }
}

Есть ли проблема с моим форматом JSON? Это все, что я могу думать о том, чтобы не допустить моего звонка.

Ответы [ 2 ]

1 голос
/ 07 мая 2011

Это потому, что он не находит подпись, которую вы отправляете (LinkBillsToCandidate (string))

Как упоминал Уве, вы можете отправить ему строку и десериализовать ее в коде на стороне сервера, используя метод десериализации JSON:http://msdn.microsoft.com/en-us/library/bb412179.aspx

0 голосов
/ 07 мая 2011

Проблема была, как я и подозревал.Небольшая настройка JSON сделала свое дело.Вот окончательный формат JSON, который работает:

{
   'bills':[
      {
         'Id':3,
         'Vote':true
      },
      {
         'Id':4,
         'Vote':false
      }
   ]
}

Этот метод ASP.NET прекрасно обрабатывает JSON:

[WebMethod]
public static void LinkBillsToCandidate(List<JsonBillForCandidate> bills)
{
    foreach (JsonBillForCandidate bill in bills)
    {
        BillLogic.LinkBillToCandidate(bill.Id, SessionHelper.CandidateId, bill.Vote);
    }

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