2012-12-04 76 views
3

我已經花了最後一晚試圖弄清楚這一點。如何將字符串化的JSON傳遞給C#方法?

基本上在谷歌地圖中,​​我能夠在用戶在客戶端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);; 
       } 
     }); 

但是我測試過,並得出結論認爲,這不會對web表單工作。有誰知道我可以如何更改此代碼,以便我可以將字符串傳遞給Webforms方法而不是MVC?

謝謝!

+1

我們可以看到GetDirections()代碼 – CR41G14

+0

這種東西_does_適用於ASP.NET Web窗體。 – Rawling

回答

4

你絕對可以做這種事情與web表單。重要的是你需要建立一個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調用擊中的WebMethod。我可以向你保證,我已經在許多不同的asp.net解決方案中完成了這項工作,不使用MVC,所以稍微修改一下你應該能夠獲得你需要的信息給你的代碼。

+0

嗨,傑西,我已經嘗試了來自同一篇文章的代碼,除了c#代碼以外的所有工作都無法獲取webform數據,NameValue [] formVars爲空。你有什麼建議。我的帖子在這裏。 http://stackoverflow.com/questions/20311890/error-with-using-jquery-to-post-form-data-to-an-asp-net-asmx-ajax-web-service –

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);; 
       } 
     }); 

而且在後面的Web表單代碼:

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