【问题标题】:How to pass Stringified JSON to C# Method?如何将字符串化的 JSON 传递给 C# 方法?
【发布时间】:2012-11-22 04:14:24
【问题描述】:

我昨晚一直在试图解决这个问题。

基本上在 Google 地图中,我能够在用户在客户端 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?

谢谢!

【问题讨论】:

  • 我们能看到 GetDirections() 代码吗
  • 这种事情确实适用于 ASP.NET Web 表单。

标签: c# asp.net ajax webforms maps


【解决方案1】:

你绝对可以用网络表单来做这种事情。重要的是,您需要设置一个 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 调用访问网络方法。我可以向您保证,我已经在许多不使用 MVC 的不同 asp.net 解决方案中完成了这项工作,因此只需稍加修改,您应该能够获得您需要的代码信息。

【讨论】:

  • 嗨,杰西,我已经尝试过同一篇文章中的代码,除了 c# 代码无法获取 webform 数据,NameValue[] formVars 为空之外,一切正常。你对此有什么建议吗?我的帖子在这里。 stackoverflow.com/questions/20311890/…
【解决方案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"]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2015-07-01
    • 2021-12-25
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2019-11-16
    相关资源
    最近更新 更多