2

jQuery.ajax() を介して C# Web サービスに送信する多数のプロパティを持つ JSON オブジェクトがあります。次のようになります。

var obj = {};
obj.LanguageCode = 1031;
obj.Gender = { 'Geschlecht': 'Mann' };
obj.City = { 'Stadt': 'Berlin' };
...

Gender や City などの一部のプロパティは、KeyValuePair にマップするローカライズ/翻訳されたプロンプトと応答を格納します。Javascript をさまざまな方法でフォーマットしようとしましたが、データ型が Dictionary の場合にのみデータが取得されます。データ型が KeyValuePair の場合は機能しません。例えば:

private Dictionary Gender { get; set; } // works: Gender[0] == {[Geschlecht,Mann]}
private KeyValuePair City { get; set; } // doesn't work: City == {[,]}

機能するので、必要に応じて辞書を使用できますが、KeyValuePair の方が適切でクリーンに使用できるようです。Javascript オブジェクトを KeyValuePairs にマップできますか、それとも Dictionary の使用にこだわっていますか?

4

1 に答える 1

1

単一のオブジェクトではなく、オブジェクトのコレクションが必要なようですKeyValuePair(コレクションにアイテムが 1 つしかない場合でも) - Dictionary はすべて、その周りにいくつかのヘルパーを持つコレクションです。

しかし、個人的には、実際のクラスを構築して値を表現し、それをもう少しうまく整理することをお勧めします-もう少し冗長ですが、それだけの価値があると思います.

// C#
public class LocalAndTranslated {
    public string Localized { get;set; }
    public string Translated { get;set; }
}

// JS
obj.Gender = { Localized: "Geschlecht", Translated: "Man" };

必要に応じて、javascript で「クラス」を定義することもできます。

var LocalAndTranslated = (function() {
    function LocalAndTranslated(localized, translated) {
        this.Localized = localized;
        this.Translated = translated;
    }
    return LocalAndTranslated;
})();

obj.Gender = new LocalAndTranslated("Geschlecht", "Man");
于 2013-03-12T19:33:35.153 に答える