189 8069 5689

ASP.NET中如何定义JavaScriptConverter

这期内容当中小编将会给大家带来有关ASP.NET中如何定义JavaScriptConverter,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

创新互联公司是一家专业提供蕲春企业网站建设,专注与成都做网站、网站设计、H5建站、小程序制作等业务。10年已为蕲春众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

1、定义存在循环引用的类型

首先我们定义一个Boy类和Girl类以供使用:

public class Boy  {  public string Name;  public Girl GirlFriend;  }  public class Girl  {  public string Name;  public Boy BoyFriend;  }

很显然,如果我将它们“配成一对”,在序列化输出时就会抛出异常了。就冲着这点,我们就必须定义一个JavaScriptConverter啊,总不能拆散他俩。


2、定义JavaScriptConverter以及序列化能力

我们下面就该开始定义JavaScriptConverter了,我们姑且将其称之为BoyConverter。首先需要告诉ASP.NET,我们这个Converter可以支持哪些类型:

public class BoyConverter : JavaScriptConverter  {  public override IEnumerable SupportedTypes  {  get  {  yield return typeof(Boy);  }  }  ……  }

如果要实现一个比较良好的Serialize方法,就需要处理“有循环引用”和“没有循环引用”两种情况。幸运的是,对于Serialize方法来说,这点比较容易:

  1. public override IDictionary, object> Serialize(object obj, 
    JavaScriptSerializer serializer)  

  2. {  

  3. IDictionary, object> result = new Dictionary, object>();  

  4. Boy boy = (Boy)obj;  

  5. result["Name"] = boy.Name;  

  6. // 如果有GirlFriend引用  

  7.     if (boy.GirlFriend != null)  

  8. {  

  9. // 摘除循环引用  

  10.         boy.GirlFriend.BoyFriend = null;  

  11. result["GirlFriend"] = boy.GirlFriend;  

  12. // 在客户端再建立关联  

  13.         result["__getRealObject"] =  

  14. "function(o) { oo.GirlFriend.BoyFriend = o; return o; }";  

  15. }  

  16. return result;  

在这里,我们“手动”地将Boy对象转换为了一个IDictionary,这样就避免出现了循环引用。另外,为了在客户端直接得到一个互相引用的“Boy”和“Girl”对象,我在这里使用了我在前一片文章中提到的扩展,具体请见《深入Atlas系列:综合示例(1) - 调用服务器端方法时直接获得客户端具体类型》。


3、自定义序列化功能使用示例

那么我们来看一下使用示例吧,首先我们需要定义一个Web Service方法:

[WebService(Namespace = "http://tempuri.org/")]  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  [Microsoft.Web.Script.Services.ScriptService]  public class BoyGirlService  : System.Web.Services.WebService {  [WebMethod]  public Boy GetBoy(string boyName, string girlName)  {  Boy boy = new Boy();  boy.Name = boyName;  if (!String.IsNullOrEmpty(girlName))  {  Girl girl = new Girl();  girl.Name = girlName;  girl.BoyFriend = boy;  boy.GirlFriend = girl;  }  return boy;  }  }

上述就是小编为大家分享的ASP.NET中如何定义JavaScriptConverter了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


分享名称:ASP.NET中如何定义JavaScriptConverter
标题路径:http://cdxtjz.cn/article/gicshe.html

联系我们

您好HELLO!
感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
  • 电话:028- 86922220 18980695689
  • 商务合作邮箱:631063699@qq.com
  • 合作QQ: 532337155
  • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

小谭建站工作室

成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

小谭观点

相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。