2011-09-20 106 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; } 
} 

我需要從兩個數據這些對象已經從數據庫中收到。我想知道什麼是最好的方法是將它們返回給客戶端。我已經想出了一些想法:

  • 兩個Web方法調用(看起來像一個額外的XHR請求)
  • 一個調用,它返回一個對象數組,通過索引0是Foo和指標一個是吧。
  • 創建一個新的結構,它封裝了這兩類

對於這個特殊的例子,我可以解決它,但我覺得這是要拿出一個批次內的什麼我編碼,我想我」在提出解決方案之前,先要問。任何人有任何經驗/反饋?如果WCF以任何方式幫助我解決這個特定問題,我肯定會願意進行切換。

我正在使用jQuery,如果這有所作爲。

回答

2

請,創建一個包裝類,包括兩個類實例:

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

這可以確保,在客戶端:

  • 你不必做上的位置的假設基於其索引的對象。
  • 客戶端代碼具有更好的可讀性和可維護性。幾乎沒有任何誤解的餘地。
  • 您可以爲您的服務操作提供單個返回參數。

至少,這是我的:-)

+0

認爲你還推薦這種方法,如果你最終只會使用一次FooBar的,只是針對Web服務調用?我想你可以把這個類放在同一個web服務文件 –

+1

中,我仍然會建議放置那個FooBar類,甚至爲它創建一個單獨的文件。您需要知道,我是日常實踐中的架構師,所以關注(未來)重用性和可維護性是我的日常工作。你個人今天不直接使用的東西,可能對你將來或其他人需要維護你的代碼很有價值。 – kroonwijk

+0

這個回答和評論很棒。我傾向於這種方式,但我試圖確保沒有另一種可接受的方式。 –