2016-08-25 27 views
1

私は辞書を構築するC#の関数を持っています。この辞書を自分のjava-script関数に渡す必要があります。辞書をc#(サーバ)からjavascript(クライアント)に渡す方法

これは私が

私のサーバ機能に

public partial class login : System.Web.UI.Page 
    { 
     protected Dictionary<string, string> GetTradingTypeToSelect() 
      { 
       Dictionary<string, string> dict = new Dictionary<string, string>(); 
       try { 
       string Types =GetString("some text); 
       var items = Types.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) 
    .Select(s => s.Split(new[] { '=' })); 

       foreach (var item in items) 
       { 
        dict.Add(item[1], item[0]); 

       } 
    //this working 100% 
       } 
       catch (Exception ex) 
       { 

       } 
       return dict; 
      } 
} 
を試してみましたが、どのような私のクライアントです:

$(document).ready(function() { 

    $("#Account").keyup(function() { 

     var TradingTypeToSelect = '<%=GetTradingTypeToSelect();%>'; 
//TradingTypeToSelect is equals to string '<%=GetTradingTypeToSelect();%>' 
     var test = TradingTypeToSelect[0].key; 
     var test2 = TradingTypeToSelect[0].value; 



    }); 

}); 

は、私はここで何をしないのですか?

+0

あなたはajax postメソッドを使用できます。このリンクを確認してください。 http://stackoverflow.com/questions/7776337/reading-c-sharp-dictionary-in-javascript –

+0

@PonmaniChinnaswamyなぜ投稿しますか? OPがデータを取得する必要があり、パラメータを送信していない場合は、 – Mateusz

答えて

1

あなたが背後にあるコードで[WebMethod]を作成し、$.ajax .Belowは完全な例で使用して、JavaScriptからそれを呼び出すことができます。背後

コード:

[System.Web.Services.WebMethod] 
public static Dictionary<string, string> GetTradingTypeToSelect() 
{ 
    var dict = new Dictionary<string, string>(); 
    dict.Add("1", "Item 1"); 
    dict.Add("2", "Item 2"); 
    return dict; 
} 

.ASPX:

<head runat="server"> 
    <title></title> 
    <script src="//code.jquery.com/jquery-1.12.3.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 

      $("#Account").keyup(function() { 
       $.ajax({ 
        type: "POST", 
        url: "AjaxCallExample.aspx/GetTradingTypeToSelect", 
        contentType: "application/json;charset=utf-8", 
        success: function (data) { 
         alert(data.d["1"]); 
         alert(data.d["2"]); 
        }, 
        error: function (errordata) { 
         console.log(errordata); 
        } 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <input id="Account" type="text" /> 
    </form> 
</body> 
0

私はあなたがクライアント側からサーバ機能を呼び出すことができるようにWebMethodを作る必要があると信じています。次に例を示します。 Calling ASP.Net WebMethod using jQuery AJAX

+0

最初のリクエストでhtmlデータタグでデータを追加できるときにAJAXを使用する理由は何ですか? – Mateusz

1

どのようにビューモデルに辞書を暴露について:

public Dictionary<string, string> TradingTypesToSelect { get; set; } 

そしてそうのようなJavaScriptの連想配列、作成、<script>ブロック内の辞書を反復処理:少なくともこの方法あなた

<script> 
    var tradingTypesToSelect = {}; 
    <% foreach (var tradingType in Model.TradingTypesToSelect) { %> 
     tradingTypesToSelect["<%= tradingType.Key %>"] = "<%= tradingType.Value %>"; 
    <% } %> 
</script> 

を追加データを取得するために(AJAX経由で)別の呼び出しを行う必要はありません。

関連する問題