如何将Stringified JSON传递给C#方法?

时间:2012-12-04 13:57:18

标签: c# asp.net ajax webforms maps

我昨晚花了很多时间试图解决这个问题。

基本上在Google地图中,我可以在客户端Javascript中选择的两个点之间生成路线或路标。

我理想地希望能够将这些存储在我的数据库中(我使用C#.NET和SQL Server DB),将它们传递给服务器端C#方法。

我已经到了可以通过使用:

将我需要的指示放入字符串的地步
*var string = JSON.stringify(response);*

现在,这就是我被困住的地方。

如何将此传递给C#webforms方法?

我已经看到了我的问题的MVC C#解决方案:

var str = JSON.stringify(data)

var city = {};
        city.Directions = str;
        $.ajax({
            type: 'POST',
            url: 'usertrip.aspx/GetDirections',
            data: str ,
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (r) {
                alert(r.d.Directions);;
                }
        });

但我已经测试过,并得出结论认为这对webforms不起作用。有谁知道如何更改此代码,以便我可以将字符串传递给Webforms方法而不是MVC?

谢谢!

2 个答案:

答案 0 :(得分:4)

你绝对可以用webforms做这种事情。重要的是,您需要设置一个Web服务,公开可以被ajax调用命中的方法。这篇名为Using jQuery to directly call ASP.NET AJAX page methods的精彩文章对我来说非常有用,可以弄清楚如何完成你想要做的事情。

例如(来自文章)做这样的事情:

public partial class _Default : Page 
{
  [WebMethod]
  public static string DoSomething(string myJsonData)
  {
    // deserialize your JSON
    // do something cool with it
  }
}

允许您使用AJAX调用点击web方法。我可以向你保证,我已经在许多不同的asp.net解决方案中完成了这项工作,不使用MVC,所以稍微修补一下你应该能够获得你所需要的信息。

答案 1 :(得分:2)

您需要执行以下操作:

var str = JSON.stringify(data)

var city = {};
        city.Directions = str;
        $.ajax({
            type: 'POST',
            url: 'usertrip.aspx/GetDirections',
            data: { city: str },
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (r) {
                alert(r.d.Directions);;
                }
        });

在Webforms代码背后:

 City city = new JavaScriptSerializer().Deserialize<City>(Request.Form["city"]);