来自 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.FirstName 和 msg.d.LastName。
请注意 .d。 It's a security feature added in 3.5,在 2.0 中不存在。
【讨论】:
戴夫,你写了一篇好文章,但没有被选为最佳答案!?!去搞清楚。我的团队喜欢你的博客,你向我们介绍了我们在生产中使用的很棒的技术。继续努力。 先生。罗宾斯是正确的,这应该是答案。谢谢。【参考方案2】:这里有一篇相当广泛的文章,主题是使用带有 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
【讨论】:
以上是关于来自 javascript PageMethods 的自定义 C# 数据传输对象的主要内容,如果未能解决你的问题,请参考以下文章
通过 PageMethods 和 AJAX 调用将 JQuery 脚本错误记录到 ASP.NET 服务器