【MVC架構】——怎樣利用Json在View和Controller之間傳遞數據


    在MVC架構中,盡管非常多東西和三層非常相似,可是也有非常大的差別。就比方傳遞數據。在三層架構中,傳遞數據就僅僅要一層返回,另外一層用同樣類型的變量來接收即可了。在MVC中,事實上原理是一樣的,Controller中的方法返回Json字符串。然后View來接收。或者反過來,不同的就是這之間須要一個序列化和反序列化的過程。


    本文就簡介利用Json在View和Controller之間傳遞數據的一個方面,大致從雙方面介紹,一是什么是Json,二是怎樣實現。


什么是Json


一、概念


    百度百科說:JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。JSON採用全然獨立於語言的文本格式,可是也使用了類似於C語言家族的習慣。

這些特性使JSON稱為理想的數據交換語言。

易於人閱讀和編寫,同一時候也易於機器解析和生成。


    說白了,Json就是實現了不同格式的數據的交換,簡單理解就是,Json能夠把其它格式的數據轉換為字符串。也能夠把字符串解析為其它格式數據。這也就實現了所謂的序列化和反序列化的過程。


    序列化和反序列化並不僅僅是這一種轉換,簡單理解能夠覺得對象轉化成字符串的過程為序列化,字符串解析為對象的過程稱為是反序列化。詳細在不同語言或平台的使用方法,讀者能夠自己動手查一查。


二、語法


Json語法是JavaScript對象表示語法的子集,有以下幾個特點:

    ●數據在鍵值對中

    ●數據由逗號分隔

    ●花括號保存對象

    ●方括號保存數組

比如:

<span style="font-family:KaiTi_GB2312;font-size:18px;">{"people":[
    {"name":"Brett","age":"21","sex":"男"},
    {"name":"Elliotte","age":"25","sex":"女"},
    {"name":"Jason","age":"30","sex":"男"},
]}</span>
    

    “name”:"Brett"稱為一個鍵值對,數據就保存在鍵值對中;數據與數據之間用逗號分隔開;由代碼能夠看出,這是三個詳細的people對象,三個人構成數組。所以代碼中花括號保存對象。方括號保存數組。


三、格式轉換


<span style="font-family:KaiTi_GB2312;font-size:18px;">var myObject={"people":[
    {"name":"Brett","age":"21","sex":"男"},
    {"name":"Elliotte","age":"25","sex":"女"},
    {"name":"Jason","age":"30","sex":"男"},
]}</span>
這樣就實現了將Json字符串賦給myObject這個變量。


    假設要進行改動則myObject.people[0].name="Fiala"這樣就對name為Brett這個人的姓名進行了改動,當然改動完畢后還應該轉換回Json。以便傳輸數據,那么就是String myObjectInJSON = myObject.toJSONString(); 


怎樣實現


一、Controller向View返回


    Controller中的方法:

<span style="font-family:KaiTi_GB2312;font-size:18px;">        #region 管理員管理界面分頁查詢 QueryBy(string strLike)
        /// <summary>
        /// 管理員管理界面分頁查詢
        /// </summary>
        /// <param name="strLike">要查詢的內容</param>
        /// <returns>Json數據</returns>
        public ActionResult QueryBy(string strLike)
        {
            //詳細實現過程,此處省略!!
            //將返回的數據序列化為Json格式
            var data = new
            {
                total,
                rows = from a in result select new { a.ID, a.AdminID, a.AdminLevel, a.AdminName, a.AdminPassword,a.IsUsed }
            };

            //返回Json數據
            return Json(data, JsonRequestBehavior.AllowGet);
        }</span>

界面接收時。會通過表格初始化時的URL屬性調用Controller中的詳細方法,然后進行解析,並賦值給表格。


二、View向Controller傳遞數據

<span style="font-family:KaiTi_GB2312;font-size:18px;">$.ajax(
        {
            url: '/Administrator/Edit',
            type: "post",
            async: true,
            dataType: 'json',
            data: { 'AdminName': 'Brett' },
            success: function (data) {
                if (data == 'true') {
                    alert("更新成功!

"); } } } );</span>


    這是一種固定格式,URL代表提交的路徑。type表示是提交還是獲取。在這里是提交。data中才是真正儲存的要提交的數據。


總結

    現階段學的東西總感覺模模糊糊的,不能系統的去理解,可能是由於學的時間短,研究的不夠深入。可是學習總要經歷這么個階段嘛。文章中僅僅是我自己的理解,假設有不正確的地方還請大家指正。謝謝!

假設有什么更好的看法。希望能跟大家多多交流。








免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM