日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NET AJAX循環(huán)引用的類型

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

為龍勝等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及龍勝網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、龍勝網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

事實(shí)上,需要自定義JavaScriptConverter的類型不止“含有循環(huán)引用”的類型,事實(shí)上,JavaScriptConverter的目標(biāo)是“ASP.NET AJAX中無法操作,或者結(jié)果不是開發(fā)人員所期望那樣”的類型,這里的“操作”包括“序列化”于“反序列化”兩部分。再舉個(gè)例子:如果一個(gè)類型沒有無參數(shù)的構(gòu)造函數(shù),那么也需要定義JavaScriptConverter,否則ASP.NET AJAX無法對(duì)其進(jìn)行反序列化操作。

那么我們就通過一個(gè)簡(jiǎn)單的例子來看一下應(yīng)該如何開發(fā)和使用JavaScriptConverter吧。

1、定義存在循環(huán)引用的類型

首先我們定義一個(gè)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;  

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

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

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

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

如果要實(shí)現(xiàn)一個(gè)比較良好的Serialize方法,就需要處理“有循環(huán)引用”和“沒有循環(huán)引用”兩種情況。幸運(yùn)的是,對(duì)于Serialize方法來說,這點(diǎn)比較容易:

 
 
 
  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. // 摘除循環(huán)引用  
  10.         boy.GirlFriend.BoyFriend = null;  
  11. result["GirlFriend"] = boy.GirlFriend;  
  12. // 在客戶端再建立關(guān)聯(lián)  
  13.         result["__getRealObject"] =  
  14. "function(o) { oo.GirlFriend.BoyFriend = o; return o; }";  
  15. }  
  16. return result;  

以上介紹ASP.NET AJAX循環(huán)引用的類型

【編輯推薦】

  1. ASP.NET MVC Web應(yīng)用程序工程
  2. IIS6的ASP.NET ISAPI請(qǐng)求處理過程
  3. ASP.NET控件的七種用戶管理相關(guān)控件
  4. 對(duì)ASP.Net進(jìn)行RSA加密
  5. ASP.NET得到數(shù)據(jù)庫字符串的方法

網(wǎng)頁標(biāo)題:ASP.NET AJAX循環(huán)引用的類型
文章源于:http://www.5511xx.com/article/ccohjid.html