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

Posted

技术标签:

【中文标题】来自 javascript PageMethods 的自定义 C# 数据传输对象【英文标题】:Custom C# data transfer objects from javascript PageMethods 【发布时间】:2010-10-02 09:30:36 【问题描述】:

我创建了一个自定义对象,我想以 JSON 格式将其返回给 javascript 方法。该对象是在 C# 中作为类创建的。

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

感谢 ***! :)

【问题讨论】:

【参考方案1】:

服务器端的 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.FirstNamemsg.d.LastName

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

【讨论】:

戴夫,你写了一篇好文章,但没有被选为最佳答案!?!去搞清楚。我的团队喜欢你的博客,你向我们介绍了我们在生产中使用的很棒的技术。继续努力。 先生。罗宾斯是正确的,这应该是答案。谢谢。【参考方案2】:

这里有一篇相当广泛的文章,主题是使用带有 jQ​​uery 的 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

【讨论】:

以上是关于来自 javascript PageMethods 的自定义 C# 数据传输对象的主要内容,如果未能解决你的问题,请参考以下文章

通过 PageMethods 和 AJAX 调用将 JQuery 脚本错误记录到 ASP.NET 服务器

有啥方法可以进行同步 PageMethods 调用?

PageMethods 和 UpdatePanel

Pagemethods得到缓存

从具有多个参数C#的PageMethods返回值后不调用成功函数

将 ASP.NET PageMethods 与 JQuery 数据表一起使用?