WebMethod没有解雇 - JSON问题?

时间:2011-05-06 20:03:12

标签: asp.net json

我通过AJAX(jQuery)调用WebMethod(ASP.NET)。如果我创建一个没有参数的调用版本,它会调用很好。当我将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 个答案:

答案 0 :(得分:1)

这是因为它没有找到你发送的签名(LinkBillsToCandidate(string))

正如Uwe所提到的,您可以使用JSON反序列化方法向服务器端代码发送一个字符串并对其进行反序列化: http://msdn.microsoft.com/en-us/library/bb412179.aspx

答案 1 :(得分:0)

问题是我怀疑的。稍微调整一下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();
}
相关问题