【MVC架构】——如何利用Json在View和Controller之间传递数据

来源:互联网 发布:阿里云免费版 编辑:程序博客网 时间:2024/06/11 17:45

    在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中才是真正储存的要提交的数据。


总结

    现阶段学的东西总感觉模模糊糊的,不能系统的去理解,可能是因为学的时间短,研究的不够深入。但是学习总要经历这么个阶段嘛,文章中只是我自己的理解,如果有不对的地方还请大家指正,谢谢!如果有什么更好的看法,希望能跟大家多多交流。







0 0