あなたはあなたがする必要があることを正確に説明します。
C#を使用してデータベースにクエリを実行し、データを取得してからjsonに変換します。現在、jsonのシリアル化には複数の手法を使用しています。JSON.NETの使用をお勧めします。これは、.NETMVCチームが使用するものです。現在.NETの一部であるDataContractSerializationは使用しません。
http://json.codeplex.com/
JSONをページに配置すると、JavaScriptがページ変数としてJSONにアクセスすることがあります。また、.NETでサービスを呼び出すこともあります。WCFを使用し、.ashxファイルを使用してWebクライアントにjsonデータを提供しました。
jsonの構造は、dojoウィジェットとWebサーバー間のコントラクトになります。チャートウィジェットまたはストアがコントラクトを定義するプロセスを開始するために必要なものを使用します。
編集
WCFインターフェース
[OperationContract]
[WebInvoke(Method="POST", UriTemplate = "/data/{service}/",
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
String RetrieveData(string service, Stream streamdata);
実装はjsonである文字列を返します。これはjsonとしてブラウザーに送信されますが、xmlノードによって.NETによってラップされます。私はそれをきれいにするユーティリティ関数を持っています。
MyUtil._xmlPrefix =
'<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">';
MyUtil._xmlPostfix = '</string>';
MyUtil.CleanJsonResponse = function(data) {
// summary:
// a method that cleans a .NET response and converts it
// to a javascript object with the JSON.
// The .NET framework, doesn't easily allow for custom serialization,
// so the results are shipped as a string and we need to remove the
// crap that Microsoft adds to the response.
var d = data;
if (d.startsWith(MyUtil._xmlPrefix)) {
d = d.substring(MyUtil._xmlPrefix.length);
}
if (d.endsWith(MyUtil._xmlPostfix)) {
d = d.substring(0, d.length - MyUtil._xmlPostfix.length);
}
return dojo.fromJson(d);
};
// utility methods I have added to string
String.prototype.startsWith = function(str) {
return this.slice(0, str.length) == str;
};
String.prototype.endsWith = function(str) {
return this.slice(-str.length) == str;
};