自javascript PageMethods创建自定义C#数据传输对象

6
我已经创建了一个自定义对象,希望将其以JSON格式返回给javascript方法。这个对象是在C#中作为类创建的。
最好的方法是从PageMethod(如果您喜欢,则为[WebMethod])返回此对象到一个javascript onPageMethodCallback()函数。我需要能够通过javascript访问此对象的属性并根据需要更新DOM(可能使用jQuery)。
感谢StackOverflow! :)
2个回答

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。更具体地说,这里是一篇关于使用jQuery调用PageMethods的文章

服务器将把返回类型序列化为JSON,并且你将能够像预期的那样访问Name类的属性。在这个例子中,是msg.d.FirstNamemsg.d.LastName

只要注意.d.就可以了。它是3.5中添加的安全功能,在2.0中不存在。


Dave,你写了一篇好文章得到了认可,但却没有被选为最佳答案?!真是难以理解。我的团队喜欢你的博客,你向我们介绍了很棒的技巧,我们已经在生产中使用了。继续保持好工作。 - David Robbins
罗宾斯先生是正确的,这应该是答案。谢谢。 - JoeB

3

以下是有关使用JSON序列化WebMethods从asmx中使用jQuery的详细文章,应该可以解决问题:

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

如果您想要使用ASP.NET AJAX而不是jQuery来执行AJAX操作,则可以查看ScriptManager和ServiceReference,它们会为您创建一个JavaScript代理。这非常强大,我们在一些相当大型的应用程序中成功使用它。发现了这篇文章:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接