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


    总结

        现阶段学的东西总感觉模模糊糊的,不能系统的去理解,可能是由于学的时间短,研究的不够深入。可是学习总要经历这么个阶段嘛。文章中仅仅是我自己的理解,假设有不正确的地方还请大家指正。谢谢!

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







  • 相关阅读:
    junit4+spring3.0.4.RELEASE测试单元基本实现
    PL/SQL 报错Dynamic Performance Tables not accessible XXX
    Oracle简单建立表空间
    R语言实现统计 plink格式数据位点缺失率
    linux shell实现统计 位点缺失率
    linux shell 统计plink格式样本缺失率
    Rstudio如何设置默认的工作路径
    如何在dos窗口中执行R脚本
    syntax error: unexpected end of file
    R语言如何删除目录下同一类型的文件、或者所有文件
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6907652.html
Copyright © 2020-2023  润新知