2011-09-20 12 views
1

ajax呼び出しとjavascriptを使用してモーダルポップを開いているとします。私はすでに私のデータベースからではなく、引数のために来て、私が使用したいバックエンドでの私のデータオブジェクトのためのクラスが書かれている.NET ASMX AJAXが返すオブジェクト

は単なるダミーのクラスです:

public class Foo { 
    public string Property1 { get;set; } 
    public string Property2 { get;set; } 
} 

public class Bar { 
    public int Id { get;set; } 
    public int Name { get;set; } 
} 

私は両方からのデータを必要としますこれらのオブジェクトのうち既にデータベースから受信したもの私はクライアント側に戻すための最良の方法が何であるかを知りたいと思います。

  • 2つのWebメソッド呼び出し(余分XHRリクエストのように思える)
  • 指数はゼロがfooとインデックス一つであるバーであることで、オブジェクトの配列を返しワンコール:私はすでにいくつかのアイデアが出ています。
  • は、この特定の例では、これらの二つのクラス

をカプセル化する新しい構造体を作成し、私はそれを回避することができますが、私はこれは私がコーディングしています何の中に多くのことを思い付くために起こっているように感じると私は「考え出し解決策を考え出す前に尋ねる。誰でも経験/フィードバックがありますか? WCFが何らかの形でこの特定の問題に私を助けてくれるならば、私は間違いなくスイッチを作っていきたいと思います。

違いがある場合はjQueryを使用しています。

答えて

2

してくださいは、2つのクラスのインスタンスを含んでラッパークラスを作成します。

  • あなたは場所に仮定をする必要はありません。

    public class FooBar { 
        public Foo foo { get; set; } 
        public Bar bar { get; set; } 
    } 
    

    これは、クライアント側で、ことを確認しますオブジェクトのインデックスに基づいて

  • クライアントコードは、読みやすく保守性に優れています。誤解の余地はほとんどありません。
  • サービス操作に対して1つのリターン引数を付けることができます。

あなたは一度だけFooBarのを使用して終了ならば、少なくとも、それは

+0

:-)私の意見であるあなたはまだだけで、Webサービスの呼び出しのために、この方法をお勧めですか?あなたは同じWebサービスファイル内にクラスを置くことができると思います。 –

+1

私はまだそのFooBarクラスを置くことを推奨し、そのために別個のファイルを作成することさえあります。私は毎日の練習で建築家だから、(将来の)再利用性とメンテナンス性に焦点を当てるのが私の毎日の仕事です。今日あなたが個人的に直接使用していないものは、将来的に、あるいはコードを維持する必要のある他の人にとって、大きな価値があることがわかります。 – kroonwijk

+0

この回答とコメントは素晴らしいです。私はこの方法に傾いていましたが、別の許容可能な方法がないことを確認しようとしていました。 –