這篇“ASP.NET怎么定義JavaScript Converter”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“ASP.NET怎么定義JavaScript Converter”文章吧。
成都創(chuàng)新互聯公司成立與2013年,先為珠暉等服務建站,珠暉等地企業(yè),進行企業(yè)商務咨詢服務。為珠暉企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
1、定義存在循環(huán)引用的類型
首先我們定義一個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 IEnumerableSupportedTypes { get { yield return typeof(Boy); } } …… }
如果要實現一個比較良好的Serialize方法,就需要處理“有循環(huán)引用”和“沒有循環(huán)引用”兩種情況。幸運的是,對于Serialize方法來說,這點比較容易:
public override IDictionary, object, object = Dictionary, object = (Boy)obj; result["Name"] = boy.Name; // 如果有GirlFriend引用 if (boy.GirlFriend != null) { // 摘除循環(huán)引用 = ; result["GirlFriend"] = boy.GirlFriend; // 在客戶端再建立關聯 result["__getRealObject"] = "function(o) { = o; return o; }"; } return result; }
在這里,我們“手動”地將Boy對象轉換為了一個IDictionary
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”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注創(chuàng)新互聯行業(yè)資訊頻道。