中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中如何定義JavaScriptConverter

發布時間:2021-07-01 16:37:22 來源:億速云 閱讀:119 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關ASP.NET中如何定義JavaScriptConverter,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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<Type> SupportedTypes  {  get  {  yield return typeof(Boy);  }  }  ……  }

如果要實現一個比較良好的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;  

在這里,我們“手動”地將Boy對象轉換為了一個IDictionary<string, objct>,這樣就避免出現了循環引用。另外,為了在客戶端直接得到一個互相引用的“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了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽宁省| 克拉玛依市| 平谷区| 怀安县| 汉沽区| 新泰市| 凌海市| 永清县| 平和县| 弥渡县| 大荔县| 大丰市| 班戈县| 武鸣县| 台湾省| 长治县| 郑州市| 安平县| 咸丰县| 楚雄市| 阿荣旗| 山东省| 来宾市| 汉阴县| 新化县| 象山县| 沛县| 彭水| 红河县| 祁阳县| 体育| 郸城县| 胶州市| 武乡县| 新源县| 阳江市| 太仆寺旗| 陆良县| 木兰县| 岳池县| 教育|