2011-08-05 15 views
4

こんにちはこのような状況があります。Webメソッドから複数のアイテムを返す最も良い方法は?

私は、Webメソッドを呼び出してUIに2 ラベルと1 ドロップダウンリストを移入する必要があります。

関数が静的であるため、Webメソッド内からページ要素(ラベルとドロップダウンリスト)にアクセスできません。だから、私が望むHTMLを返そうとしています。

[WebMethod()] 
    public static object[] GetStatus() 
    { 
     //Return text for Label1; 

     //Return text for Label2; 

     //Return items to display in ListBox [Number of items can vary] 

    } 

オブジェクト[]が動作する可能性があります。しかし、この状況を処理するには最良の方法ですか?また、これらのコントロールの値を設定するために必要なJavaスクリプトコード(Webメソッドの呼び出し後)を考慮すると、このようなシナリオではどのようなベストプラクティスですか?

答えて

6

ViewModelクラスを作成します。

public class StatusViewModel 
{ 
    public string Label1 { get; set; } 
    public string Label2 { get; set; } 
    public IDictionary<string, string> ListBox { get; set; } 
} 

[WebMethod()] 
public static StatusViewModel GetStatus() 
{ 
    // do work 
    return new StatusViewMode.... 

} 
+0

+1とシンプルでクリアな答え... –

+0

+1、クライアントとサーバーの両方でその使い方を見せたら+1。 –

3

string[]は?あなたはそれを試しましたか?

+0

+1も... :) –

+0

@John .. + 1。まあ、まだ..私は始める前にベストプラクティスを知りたがっています。 – Ananth

+2

ベストプラクティスは動作する最も簡単なことです。いくつかの文字列が必要です。最も簡単なのは、文字列の配列を送信することです。数が3または4より大きい場合、文字列値ごとに1つのプロパティを持つオブジェクトを返します。返すものが複数ある場合は、すぐにオブジェクトを使用します。 –

2

複合オブジェクトを作成して返します。

public class combinedObject{ 
    public string Labe11; 
    public string Label2; 
    .. 
} 
+0

ありがとうShankar。+ 1 – Ananth

1

一致するプロパティを含むカスタムオブジェクトウィッチを作成します。シリアライズとデシリアライズを行うカスタムのシリアライズを作成します。

+0

ありがとうChamika +1 – Ananth

関連する問題