• 前端PostJosn,后端转化相应的类


    /// <summary>
        /// JsonPost特性类
        /// </summary>
        [AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
        public class JsonPostAttribute : ActionFilterAttribute
        {
            /// <summary>
            /// 类型
            /// </summary>
            public Type ParamType { get; set; }
    
            /// <summary>
            /// .ctor
            /// </summary>
            public JsonPostAttribute(Type paramType)
            {
                ParamType = paramType;
            }
    
            /// <summary>
            /// .ctor
            /// </summary>
            public JsonPostAttribute()
            {
    
            }
    
            /// <summary>
            /// Action执行前过滤器
            /// </summary>
            /// <param name="filterContext"></param>
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                using (System.IO.StreamReader sr = new System.IO.StreamReader(filterContext.HttpContext.Request.InputStream,
                        System.Text.Encoding.GetEncoding("utf-8")))
                {
                    var data = sr.ReadToEnd();
                    var methodInfo = ((ReflectedActionDescriptor)filterContext.ActionDescriptor).MethodInfo;
                    if (ParamType == null)
                    {
                        foreach (var p in methodInfo.GetParameters())
                        {
                            ParamType = p.ParameterType;
                            break;
                        }
                    }
    
                    if (ParamType != null)
                    {
                        var callback = data.ToInstance(ParamType);
                        foreach (var p in methodInfo.GetParameters())
                        {
                            if (p.ParameterType.FullName == ParamType.FullName)
                            {
                                filterContext.ActionParameters[p.Name] = callback;
                                break;
                            }
                        }
                    }
                }
            }
        }

    调用 方式

            [JsonPost]
            public JsonResult Create(CreateOrUpdateOrderReq req)
            {            
    
                return req!=null && req.Id>0;
            }

    前端Post

    {"Id":1}

    另一种实现

    客户端调用时 header 里 添加

     Content-Type: application/json;charset=UTF-8

    则MVC会自动解析

  • 相关阅读:
    alt属性和title属性
    穷人和富人的区别
    JS经典源码:通用JavaScript脚本函数库
    网页弹出框
    男女交往必知15个真理
    alexa排名
    好男人找不到女朋友的根源
    小笑话集(全是经典!)不信你不笑(转)
    送到家服务网2009年3月26日顺利上线了!
    [转]互联网产品开发中的“快”字诀
  • 原文地址:https://www.cnblogs.com/zhshlimi/p/6877557.html
Copyright © 2020-2023  润新知