• Asp.Net MVC以JSON传值扩展方法


    Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下:

    DataContractJsonSerializer类:

    该类在System.Runtime.Serialization.Json命名空间下,是将对象序列化为JavaScript对象表示法(Json),并将Json数据反序列化为对象。

    以Asp.Net MVC为例:

    扩展方法如下:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.IO;

    using System.Runtime.Serialization.Json;

    namespace System.Web.Mvc

    {  

        public  static  class  MyFormCollention

        {

            /// <summary>

            /// 生成Json格式

            /// </summary>

            /// <typeparam name="T"></typeparam>

            /// <param name="obj"></param>

            /// <returns></returns>

            public static string ToJsonStr<T>(T obj)

            {

    DataContractJsonSerializerjson = new DataContractJsonSerializer(obj.GetType());

                using (MemoryStream stream = new MemoryStream())

                {

    json.WriteObject(stream, obj);

                    string szJson = System.Text.Encoding.UTF8.GetString(stream.ToArray());

                    return szJson;

                }

            }

            /// <summary>

            /// 将JSON 字符转换为对象

            /// </summary>

            /// <typeparam name="T"></typeparam>

            /// <param name="str"></param>

            /// <returns></returns>

            public static T ToJsonObject<T>(this string str)

            {

                T obj = Activator.CreateInstance<T>();

                using (MemoryStreamms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str)))

                {

    DataContractJsonSerializerserializer = new DataContractJsonSerializer(obj.GetType());

                    return (T)serializer.ReadObject(ms);

                }

            }

        }

    }

    网页客户端,View的Home文件夹(View视图):

    <script>

    var Person={

            Name:"liu",

            Age:"20",

        }

    functionReposeJson() {

            $.ajax({

    type:"Get",

            url:"@Url.Action("SetJson","Home")?json="+JSON.stringify(Person),

    dataType: "Json",

            success: function (data)

            {

                alert(data.Name);

                alert(data.Age);

            }

            })

        }

    </script>

    <h3>We suggest the following:</h3>

    <olclass="round">

    <liclass="one">

    <ahref="#"onclick="ReposeJson()">Learn more…</a>

    </li>

    </ol>

    控制器调用:

    public class HomeController : Controller

        {

            [HttpGet]

            public string SetJson(string json)

            {

                Person boy = MyFormCollention.ToJsonObject<Person>(json);

                Person girl = new Person();

    girl.Age = "19";

    girl.Name = "wang";

    json = MyFormCollention.ToJsonStr<Person>(girl);

                return json;

            }

         }

    实体类:

    public class Person {

            public string Name{set;get;}

            public string Age { set; get; }

        }

  • 相关阅读:
    Xcode7.x中安装Alcatraz
    iOS开发:一个无限滚动自动播放图片的Demo(Swift语言编码)
    ios开发:一个音乐播放器的设计与实现
    iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
    iOS开发:XCTest单元测试(附上一个单例的测试代码)
    设计模式之构造者模式
    控制流程
    变量与常量定义
    go语言内置基础类型
    解决Win10 Virtualbox5.2.18桥接不能联网小记
  • 原文地址:https://www.cnblogs.com/sumuncle/p/4372622.html
Copyright © 2020-2023  润新知