1

JavaScript から C# に任意のタイプのデータを送信できるようにしたいと考えています。基本的に、このオブジェクトを含むAJAX呼び出しを介してJavascript側からJSONオブジェクトを送信しようとしています-

AnObject = new Object;
AnObject.value = anyValue;

$.ajax({
    type: "POST",
    url: "myURL",
    data: "{ 'myObject':" + JSON.stringify(AnObject) + "}",
    dataType: 'json',
    success: function (data) {
        //do something
    }
});

anyValue は、int、文字列、配列、連想配列、日付などです。

C# 側では、次のようなクラスが必要です -

public AnyClass {
    DataType(?) value;
}

public ActionResult acceptData(AnyClass myObject) {
    Here, the data should be deserialized correctly depending on it's type into DataType(?)
}

これは可能ですか?私が使用できるC#のジェネリック型があると確信していますか?

4

2 に答える 2

1

技術的な観点から、それは可能です。ただし、いくつかの重要な詳細を自分で把握する必要があります。

  • 構築するオブジェクトのタイプをどのように知ることができますか?
  • そのタイプのオブジェクトをどのように構築しますか? 型にデフォルトのコンストラクターがあると仮定できますか? ある種の DI フレームワークを使用しますか?

作成されたすべてのオブジェクトが本当に POCO スタイルのオブジェクトである必要があると言いたい場合、これは非常に簡単になります。

public ActionResult acceptData() {
    Type type = FigureOutWhatTypeToUse();
    object instance = Activator.CreateInstance(type);
    // This allows ASP.NET MVC's model binding to do the dirty work,
    // initializing the properties of your instance based on the submitted
    // parameters.
    TryUpdateModel((dynamic) instance, "myObject"); 
}

配列を渡す場合は、配列を持つプロパティを持つオブジェクト タイプを定義します。そうすれば、MVC は、プロパティが配列である必要があるという事実を認識し、それに応じてバインドできます。

PS-これは読みやすく、エラーが発生しにくいようです:

data: JSON.stringify({ myObject : AnObject }),
于 2013-10-08T19:24:46.883 に答える