• ajax, 通过JSON.stringify(Model)传递对象


    直接上实例:

    js部分:

    1.对象实体

    var userInfo={
                                UserID: "@User.UserID", UserName: "@User.UserName", UserRole:"@((int)User.Role)",ClassID: @classid,
                                ClassName:"@ViewBag.ClassModel.ClassName",
                                title: fileObj.name, url: json.info.image,  json.info.size.width, height: json.info.size.height
                            };


    ajax调用:

    $.post("/Paint/Create", {userInfo: JSON.stringify(userInfo)}, function (ret) {
                                if(ret==1)
                                    $("#formview").append("<input type='hidden' value='" + ret + "' name='pids' />");
                                else if (ret == 2)
                                    return dlg.Msg.Err("对不起!您发表的标题包含敏感词,请重新输入!");
                                else if (ret == 3)
                                    return dlg.Msg.Err("对不起!您发表的内容包含敏感词,请重新输入!");
                                else if(ret==0)
                                    return dlg.Msg.Err("上传失败");
                            });

    2.后台程序

    实体部分,注意大小写要一致

    public class UserInfo
            {
                public int UserID { get; set; }
                public string UserName { get; set; }
                public long ClassID { get; set; }
                public string ClassName { get; set; }
                public int UserRole { get; set; }
                public string title { get; set; }
                public string Content { get; set; }
                public string url { get; set; }
            }
    [HttpPost]
            public ActionResult Create(FormCollection collection, string userInfo)
            {
                UserInfo userinfo = new UserInfo();
                userinfo = UtilHelper.ConvertToEntity<UserInfo>(userInfo);
                int userid = userinfo.UserID;
                string username = userinfo.UserName;
                long classid = userinfo.ClassID;
                string classname = userinfo.ClassName;
                int UserRole = userinfo.UserRole;
                var t = userinfo.title;
                var c = userinfo.Content;
                var u = userinfo.url;
           //do something here }
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.Serialization.Json;
    using System.Text;
    using System.Web;
    
    namespace CiWong.Class.Area.Controllers
    {
        public static class UtilHelper
        {
            /// <summary>
            /// 生产JSON格式字符串
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static string ToJsonStr<T>(T obj)
            {
                DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
                using (MemoryStream stream = new MemoryStream())
                {
                    json.WriteObject(stream, obj);
                    return Encoding.UTF8.GetString(stream.ToArray());
                }
            }
            /// <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 (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                    return (T)serializer.ReadObject(ms);
                }
            }
            #region Json数据转换为泛型集合(或实体)
    
            /// <summary>
            /// 单条json数据转换为实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="str">字符窜(格式为{a:'',b:''})</param>
            /// <returns></returns>
            private static T ConvertToEntity<T>(string str)
            {
                Type t = typeof(T);
                object obj = Activator.CreateInstance(t);
                var properties = t.GetProperties();
                string m = str.Trim('{').Trim('}');
                string[] arr = m.Split(',');
                for (int i = 0; i < arr.Count(); i++)
                {
                    for (int k = 0; k < properties.Count(); k++)
                    {
                        string Name = arr[i].Substring(0, arr[i].IndexOf(":"));
                        object Value = arr[i].Substring(arr[i].IndexOf(":") + 1);
                        if (properties[k].Name.Equals(Name))
                        {
                            if (properties[k].PropertyType.Equals(typeof(int)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt32(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(string)))
                            {
                                properties[k].SetValue(obj, Convert.ToString(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(long)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt64(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(decimal)))
                            {
                                properties[k].SetValue(obj, Convert.ToDecimal(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(double)))
                            {
                                properties[k].SetValue(obj, Convert.ToDouble(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<int>)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt32(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<decimal>)))
                            {
                                properties[k].SetValue(obj, Convert.ToDecimal(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<long>)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt64(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<double>)))
                            {
                                properties[k].SetValue(obj, Convert.ToDouble(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<DateTime>)))
                            {
                                properties[k].SetValue(obj, Convert.ToDateTime(Value), null);
                            }
    
                        }
                    }
    
                }
                return (T)obj;
            }
    
            /// <summary>
            /// 多条Json数据转换为泛型数据
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="jsonArr">字符窜(格式为[{a:'',b:''},{a:'',b:''},{a:'',b:''}])</param>
            /// <returns></returns>
            public static List<T> ConvertTolist<T>(this string jsonArr)
            {
                if (!string.IsNullOrEmpty(jsonArr) && jsonArr.StartsWith("[") && jsonArr.EndsWith("]"))
                {
                    Type t = typeof(T);
                    var proPerties = t.GetProperties();
                    List<T> list = new List<T>();
                    string recive = jsonArr.Trim('[').Trim(']').Replace("'", "").Replace("\"", "");
                    string[] reciveArr = recive.Replace("},{", "};{").Split(';');
                    foreach (var item in reciveArr)
                    {
                        T obj = ConvertToEntity<T>(item);
                        list.Add(obj);
                    }
                    return list;
                }
                return null;
    
            }
            #endregion
        }
    }
  • 相关阅读:
    MVC 导出Execl 的总结几种方式 (一)
    MVC 中导出Execl 对 科学计数 的转化
    MVC 中使用kindEditor 图片上传在IE 上进行上传出现的问题
    C# 后台处理图片的几种方式
    MVC 手机端页面 使用标签file 图片上传到后台处理
    MVC 中使用log4net 打印重复日志解决方法
    MVC 初始 Log4net (一)
    MVC 局部加载页面的实例
    K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署
    K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署
  • 原文地址:https://www.cnblogs.com/jeff20120716/p/2938888.html
Copyright © 2020-2023  润新知