2012-01-10 14 views
0

私のASP.NETページでは、クライアント側のフォームからいくつかのデータを返す必要があります。これは辞書オブジェクトとして格納することをお勧めします。さて、サーバー上のコードビハインドから(Request.Cookies/他の推奨代替方法を介して)一度アクセスしたJavaScript関数では、どのようなオブジェクトタイプを使用するのかよく分かりません。 .NET辞書オブジェクト?使用するjavascript配列/オブジェクトの種類は何ですか?

現在、データを特別にフォーマットされた文字列として保存していますが、サーバー上では、データを配列に分割して使用しています。だから、私はもっと良い、そしてもちろん、これを行うためのより良い方法を知りたいと思っていますか?

+4

JSON形式の使用を検討しましたか? 、文字列としてページ上に直接書いて、それを解析する – Rafael

+0

はい私は試みましたが、それを.netディクショナリオブジェクトに変換する方法を知らなかった、そしてそれは私が混乱したところです。 – MrClan

答えて

0

jsonを使用してデータを転送することができます.JavaScriptではうまく機能し、.Net 4.0ではサポートされています。

まず店舗javascriptオブジェクト内のデータと、それを文字列化:

var data = {} 
data.name = "Joe"; 
data.age = 17; 

// ... whatever else you do ... 

// convert to string 
var jsonString = JSON.stringify(data); 

// ... put in cookie, or use ajax, or use something else to give it to .Net 

を次にネット側では、あなたが辞書にJSONを変換するSystem.Web.Script.Serialization.JavaScriptSerializerを使用することができますが:

String jsonString = HoweverYouGetIt(); 
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
Dictionary<string,object> data = serializer.DeserializeObject(jsonString) as Dictionary<string,object>; 
//you can now use (int)data["name"] 

JavaScriptSerializer .NET 4.0のみであるSystem.Web.Extensionsアセンブリで見つけることができますが、this questionには他の選択肢があります。

データを送信する方法については、動的Webアプリケーションの場合はajaxを使用してください。複数のページにまたがってデータを収集するウェブサイトの場合は、Cookieを使用します。

いつものように、入力を確実に消毒してください!

+0

ありがとう@MackieChan、** System.Web.Script.Serialization.JavaScriptSerializer()。DeserializeObject()**は私が探していたものでした。 – MrClan

関連する問題