来自javascript PageMethods的自定义C#数据传输对象

时间:2009-01-20 06:40:33

标签: asp.net javascript ajax json asp.net-ajax

我已经创建了一个自定义对象,我希望以JSON方式返回到javascript方法。该对象是在C#中创建的一个类。

将此对象从PageMethod(如果您喜欢的[WebMethod])返回到javascript onPageMethodCallback()函数的最佳方法是什么?我需要能够通过javascript访问该对象的属性并根据(可能使用jQuery)更新DOM。

谢谢StackOverflow! :)

2 个答案:

答案 0 :(得分:12)

服务器端的ASP.NET AJAX将处理为您序列化对象。例如:

public class Name
{
  public string FirstName;
  public string LastName;
}

[WebMethod]
public Name GetName()
{
  Name name = new Name();

  name.FirstName = "Dave";
  name.LastName = "Ward";

  return name;
}

然后,您可以使用与JD链接的基本相同的方法直接从jQuery调用PageMethod。更具体地说,这是a post about calling PageMethods with jQuery

服务器将您的返回类型序列化为JSON,您将能够按预期访问Name类的属性。在此示例中, msg.d.FirstName msg.d.LastName

请注意.d。 It's a security feature added in 3.5,并且不存在于2.0中。

答案 1 :(得分:3)

这是关于使用jQuery的asmx中的JSON序列化WebMethods这一主题的相当广泛的帖子。它应该做的伎俩。

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

如果你想使用ASP.NET AJAX而不是jQuery来执行AJAX,那么你应该看一下为你创建一个javascript代理的ScriptManager和ServiceReference。它非常强大,我们在一些非常大的应用程序中成功使用它。找到这篇文章:

http://dotnetslackers.com/articles/ajax/JSON-EnabledWCFServicesInASPNET35.aspx