zoukankan      html  css  js  c++  java
  • 提供一个Json传到服务端序列化json参数的Filter类供大家参考

    在网上找了半天关于如何从前端json传过来的数据,到后台获取。
     

    主要思路如下,通过JsonParamFilter类来序列化从前端获取的数据。
     JsonParamFilter.cs:

    代码
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Runtime.Serialization; // 需要引用 System.Runtime.Serialization
    using System.Runtime.Serialization.Json; // 需要引用 System.ServiceModel.Web
    using System.Web;
    using System.Web.Mvc;


    ///<summary>
    ///使Action Method可以接收序列化后的JSON对象并转换为强类型参数
    ///</summary>
    public class JsonParamFilter : ActionFilterAttribute
    {
    ///<summary>
    ///类型名称
    ///</summary>
    public Type TargetType { get; set; }

    ///<summary>
    ///类型对应的参数名称
    ///</summary>
    public string Param { get; set; }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
    if ((filterContext.HttpContext.Request.ContentType ?? string.Empty).Contains("application/json"))
    {
    try
    {
    object o = new DataContractJsonSerializer(TargetType).ReadObject(filterContext.HttpContext.Request.InputStream);
    filterContext.ActionParameters[Param]
    = o;

    }
    catch { }
    }
    }
    }

    Action Method里的使用方法:
            [JsonParamFilter(TargetType = typeof(EmployeeInfo), Param = "employeeInfo")]
            public ActionResult TestJson(EmployeeInfo employeeInfo)
            {
                return Json(employeeInfo);
            }

      
    客户端调用:
       <script type="text/javascript">
            var employee = new Object();
            employee.Name = "人员1";
            employee.Age = 25;
            employee.Salary = 12345;
     
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "/Home/TestJson/",
                data: $.toJSON(employee),   // 序列化JSON对象,用了一个叫 jquery-json 的插件
                dataType: "json",
                success: function(json) {
                    alert("Name:" + json.Name + ", Age:" + json.Age + ", Salary:" + json.Salary);
                }
            });
        </script>
     
    jquery-json 的插件 jquery.json-2.2.js 大家到网上搜一下就有,在这里就不列出来了。

  • 相关阅读:
    【转载】网站服务器运维记实:阿里云1核2G突发性能t5服务器突然变得卡顿
    【转载】C#中自定义Sort的排序规则IComparable接口
    【转载】C#将图片转换为二进制流调用
    【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾
    Java通过反射机制修改类中的私有属性的值
    Android -- 分享功能和打开指定程序
    Java存储密码用字符数组
    java笔试题(3)
    Java中的String与常量池
    Android -- 距离感应器控制屏幕灭屏白屏
  • 原文地址:https://www.cnblogs.com/jiewong/p/1727504.html
Copyright © 2011-2022 走看看