2011-09-20 120 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

这个回答和评论很棒。我倾向于这种方式,但我试图确保没有另一种可接受的方式。 –