成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET AJAX循環引用的類型

開發 后端
本文介紹ASP.NET AJAX循環引用的類型,在這里“官方”的解決方案就是JavaScriptConverter,它可以讓開發人員自定義特定類型的序列化能力。

有時候在Web Service中會需要使用到比較復雜的類型,它們的特征往往都是含用循環引用,這樣的對象如果交給ASP.NET AJAX中默認的序列化方式來處理則會拋出異常,大家經常遇到的“DataTable”問題正是由此引起的。關于這一點,ASP.NET AJAX自然提供了解決方法,在這里“官方”的解決方案就是JavaScriptConverter,它可以讓開發人員自定義特定類型的序列化能力。

事實上,需要自定義JavaScriptConverter的類型不止“含有循環引用”的類型,事實上,JavaScriptConverter的目標是“ASP.NET AJAX中無法操作,或者結果不是開發人員所期望那樣”的類型,這里的“操作”包括“序列化”于“反序列化”兩部分。再舉個例子:如果一個類型沒有無參數的構造函數,那么也需要定義JavaScriptConverter,否則ASP.NET AJAX無法對其進行反序列化操作。

那么我們就通過一個簡單的例子來看一下應該如何開發和使用JavaScriptConverter吧。

1、定義存在循環引用的類型

首先我們定義一個Boy類和Girl類以供使用:

  1. public class Boy  
  2. {  
  3. public string Name;  
  4. public Girl GirlFriend;  
  5. }  
  6. public class Girl  
  7. {  
  8. public string Name;  
  9. public Boy BoyFriend;  


很顯然,如果我將它們“配成一對”,在序列化輸出時就會拋出異常了。就沖著這點,我們就必須定義一個JavaScriptConverter啊,總不能拆散他倆。


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

我們下面就該開始定義JavaScriptConverter了,我們姑且將其稱之為BoyConverter。首先需要告訴ASP.NET,我們這個Converter可以支持哪些類型:

  1. public class BoyConverter : JavaScriptConverter  
  2. {  
  3. public override IEnumerable<Type> SupportedTypes  
  4. {  
  5. get  
  6. {  
  7. yield return typeof(Boy);  
  8. }  
  9. }  
  10. ……  


如果要實現一個比較良好的Serialize方法,就需要處理“有循環引用”和“沒有循環引用”兩種情況。幸運的是,對于Serialize方法來說,這點比較容易:

  1. public override IDictionary<string, object> Serialize(object obj,
     JavaScriptSerializer serializer)  
  2. {  
  3. IDictionary<string, object> result = new Dictionary<string, 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;  

以上介紹ASP.NET AJAX循環引用的類型

【編輯推薦】

  1. ASP.NET MVC Web應用程序工程
  2. IIS6的ASP.NET ISAPI請求處理過程
  3. ASP.NET控件的七種用戶管理相關控件
  4. 對ASP.Net進行RSA加密
  5. ASP.NET得到數據庫字符串的方法
責任編輯:佚名 來源: cnblogs
相關推薦

2009-07-22 16:11:43

ASP.NET AJA

2009-07-22 16:17:39

ASP.NET AJA

2009-07-22 16:25:41

ASP.NET AJA

2009-07-24 13:41:15

ASP.NET AJA

2009-07-22 16:05:34

ASP.NET AJA

2009-07-20 13:14:25

安裝ASP.NET A

2009-07-20 17:39:36

WCF服務ASP.NET AJA

2009-07-22 15:58:52

ASP.NET AJA

2009-07-31 13:24:43

ASP.NET AJA

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-07-20 10:16:13

配置ASP.NET A

2009-07-28 09:02:32

asp.net aja

2009-07-20 17:59:07

JavaScript調ASP.NET AJA

2009-07-21 09:53:55

ASP.NET AJAWCF服務

2009-07-24 13:08:40

AJAX技術ASP.NET

2009-07-27 09:07:04

Profile SerASP.NET AJA

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-07-29 15:53:22

ASP.NET AJA

2009-08-07 16:09:25

ASP.NET AJA

2009-07-20 13:54:31

ScriptManagASP.NET AJA
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区 在线 | 日本在线播放一区二区 | 中日韩欧美一级片 | 99国产精品久久久久老师 | 天天爱av | 九色.com| 国产福利在线看 | 欧美成人精品一区二区男人看 | 欧美成人h版在线观看 | 久久婷婷色 | 看黄在线 | 精品一区二区久久久久久久网站 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久99精品国产99久久6男男 | 日韩成人国产 | 91国在线高清视频 | 欧美一级欧美三级在线观看 | 欧美精品日韩精品 | 黄色av网站免费看 | 狠狠色综合久久丁香婷婷 | 久久国产精品视频 | 亚洲综合无码一区二区 | 亚洲欧美中文日韩在线v日本 | 欧美精品成人一区二区三区四区 | 日韩伦理一区二区 | 欧美视频在线免费 | 青青草华人在线视频 | www久久久| 国产成人精品a视频一区www | 亚洲精品国产第一综合99久久 | 日韩在线免费 | 亚洲在线 | 日韩在线视频一区 | 久久久久国产精品一区三寸 | 久久国产精品-国产精品 | 女人av| 波多野结衣精品在线 | 亚洲欧美日韩在线不卡 | 久久一区二区三区电影 | 在线免费观看黄a | 亚洲国产精品久久久久秋霞不卡 |