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

溫馨提示×

溫馨提示×

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

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

ASP.NET中怎么定義JavaScript Converter

發布時間:2022-05-23 16:05:29 來源:億速云 閱讀:153 作者:iii 欄目:大數據

這篇文章主要講解了“ASP.NET中怎么定義JavaScript Converter”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET中怎么定義JavaScript Converter”吧!

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方法來說,這點比較容易:

public override IDictionary, object, object =  Dictionary, object = (Boy)obj;  result["Name"] = boy.Name;  // 如果有GirlFriend引用      if (boy.GirlFriend != null)  {  // 摘除循環引用           = ;  result["GirlFriend"] = boy.GirlFriend;  // 在客戶端再建立關聯          result["__getRealObject"] =  "function(o) {  = o; return o; }";  }  return result;  }

在這里,我們“手動”地將Boy對象轉換為了一個IDictionary<string, objct>,這樣就避免出現了循環引用。另外,為了在客戶端直接得到一個互相引用的“Boy”和“Girl”對象。


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中怎么定義JavaScript Converter”的內容了,經過本文的學習后,相信大家對ASP.NET中怎么定義JavaScript Converter這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

满城县| 泾源县| 富民县| 将乐县| 迭部县| 宜宾市| 浦城县| 宁阳县| 象山县| 且末县| 苍山县| 伊宁县| 通化县| 高青县| 昭通市| 安新县| 茶陵县| 子洲县| 霸州市| 松滋市| 乐昌市| 广南县| 上林县| 甘泉县| 华坪县| 镇远县| 林周县| 潼关县| 璧山县| 兴国县| 乌拉特中旗| 张掖市| 丹棱县| 图们市| 任丘市| 玛纳斯县| 县级市| 贵南县| 修武县| 津南区| 长垣县|