3

我昨晚一直在试图弄清楚这一点。

基本上在谷歌地图中,​​我能够在用户在客户端 Javascript 中选择的两点之间生成方向或航路点。

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

我已经到了可以使用以下方法将我需要的方向放入字符串中的地步:

*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 方法而不是 MVC?

谢谢!

4

2 回答 2

4

你绝对可以用网络表单来做这种事情。重要的是,您需要设置一个 Web 服务来公开可能被 ajax 调用命中的方法。这篇名为“使用 jQuery 直接调用 ASP.NET AJAX 页面方法”的精彩文章证明对我弄清楚如何完成您正在尝试做的事情非常宝贵。

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

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

将允许您通过 AJAX 调用访问 webmethod。我可以向您保证,我已经在许多不使用 MVC 的不同 asp.net 解决方案中完成了这项工作,因此只需稍加修改,您应该能够获得您需要的代码背后的信息。

于 2012-12-04T14:05:12.587 回答
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"]);
于 2012-12-04T14:04:09.723 回答