• json表单回填(表单反序列化回填值)


     之前用ajax做添加 用到了表单序列化来取页面form的值
        var ifmdata = $('#ifm').serialize();//表单序列化
    然后ajax
    $.post('/S_UserInfo/SaveUserInfo', ifmdata, function (data)
                {
                    ~~~~
                })
    ---------那么页面加载的时候 比如做修改,首先要加载要修改的对象的数据到页面表单上。
    那么就可以这样搞:
    首先你要引用一个jq
    <script src="/Content/js/jquery.min.js"></script>
    然后你再把下面的脚本复制
    <script>
     
        $.fn.extend({
            //表单加载json对象数据
            setForm: function (jsonValue) {
                var obj = this;
                $.each(jsonValue, function (name, ival) {
                    var $oinput = obj.find("input[name=" + name + "]");
                    if ($oinput.attr("type") == "checkbox") {
                        if (ival !== null) {
                            var checkboxObj = $("[name=" + name + "]");
                            var checkArray = ival.split(";");
                            for (var i = 0; i < checkboxObj.length; i++) {
                                for (var j = 0; j < checkArray.length; j++) {
                                    if (checkboxObj[i].value == checkArray[j]) {
                                        checkboxObj[i].click();
                                    }
                                }
                            }
                        }
                    }
                    else if ($oinput.attr("type") == "radio") {
                        $oinput.each(function () {
                            var radioObj = $("[name=" + name + "]");
                            for (var i = 0; i < radioObj.length; i++) {
                                if (radioObj[i].value == ival) {
                                    radioObj[i].click();
                                }
                            }
                        });
                    }
                    else if ($oinput.attr("type") == "textarea") {
                        obj.find("[name=" + name + "]").html(ival);
                    }
                    else {
                        obj.find("[name=" + name + "]").val(ival);
                    }
                })
     
            }
        });
    </script>
     
    上面这是基于jq扩展的一个方法setForm
    这样就可以使用setForm这个函数了
    具体使用如下:
    //当页面加载的时候 执行下面脚本
       var _uid = getUrlParam("uid");//首先获取地址栏参数 通常是这个修改的对象的id
            if (_uid != null) {//判断ID不为空
                $.post('/S_UserInfo/GetUserInfo', { uid: _uid }, function (data) {//那么开始从后台根据ID取这个对象 并且用json返回
                    
                    $("#ifm").setForm(JSON.parse(data));//这里就是调用那个扩展的方法来对表单form进行赋值(再也不用一个值一个表单的写了),注意这里用到了json2.js需要把json字符串转换成json对象。
                })
            }
    -------------------------至于后台代码也贴个把 根据id获取对象 并且返回json
       //根据ID获取用户对象json
            public ActionResult GetUserInfo(int uid)
            {
                InterViewCommon.SmileAngel sa = new InterViewCommon.SmileAngel();
                if (uid > 0)
                {
                    var modelUser = sa.GetModel<InterViewModel.s_userinfo>("s_userinfo", "*", "u_id=" + uid);
                    MyJsonHelp jsonhelp = new MyJsonHelp();
                    return  jsonhelp.MyJson(modelUser, "yyyy-MM-dd");
                   
                }
                return null;
            }
     
    这个函数用到了最新的 微笑天使类,数据库新尝试使用的mysql(在使用过程中发现mysql的sql语句还是有些不同的,所以需要灵活更改底层方法),这里有用到了一个json帮助类 目的就是解决日期格式,mvc默认的json转换会把日期转换成一大堆……&#……@&……¥#@*。
    -----------------------算了 送佛送到西,把json帮助类也贴出来把。。。。
    一共需要两个类:  CustomJsonResult  和 MyJsonHelp 如下:
     
    public class CustomJsonResult : JsonResult
        {
            /// <summary>
            /// 格式化字符串
            /// </summary>
            public string FormateStr
            {
                get;
                set;
            }
     
            /// <summary>
            /// 重写执行视图
            /// </summary>
            /// <param name="context">上下文</param>
            public override void ExecuteResult(ControllerContext context)
            {
                if (context == null)
                {
                    throw new ArgumentNullException("context");
                }
     
                HttpResponseBase response = context.HttpContext.Response;
     
                if (string.IsNullOrEmpty(this.ContentType))
                {
                    response.ContentType = this.ContentType;
                }
                else
                {
                    response.ContentType = "application/json";
                }
     
                if (this.ContentEncoding != null)
                {
                    response.ContentEncoding = this.ContentEncoding;
                }
     
                if (this.Data != null)
                {
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    string jsonString = jss.Serialize(Data);
                    string p = @"\/Date((d+))\/";
                    MatchEvaluator matchEvaluator = new MatchEvaluator(this.ConvertJsonDateToDateString);
                    Regex reg = new Regex(p);
                    jsonString = reg.Replace(jsonString, matchEvaluator);
     
                    response.Write(jsonString);
                }
            }
     
            /// <summary>  
            /// 将Json序列化的时间由/Date(1294499956278)转为字符串 .
            /// </summary>  
            /// <param name="m">正则匹配</param>
            /// <returns>格式化后的字符串</returns>
            private string ConvertJsonDateToDateString(Match m)
            {
                string result = string.Empty;
                DateTime dt = new DateTime(1970, 1, 1);
                dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));
                dt = dt.ToLocalTime();
                result = dt.ToString(FormateStr);
                return result;
            }
        }
     
    ------------------
      public class MyJsonHelp : Controller
        {
     
            #region 重写json
     
            /// 返回JsonResult
            /// </summary>
            /// <param name="data">数据</param>
            /// <param name="contentType">内容类型</param>
            /// <param name="contentEncoding">内容编码</param>
            /// <param name="behavior">行为</param>
            /// <returns>JsonReuslt</returns>
            protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
            {
                return new CustomJsonResult
                {
                    Data = data,
                    ContentType = contentType,
                    ContentEncoding = contentEncoding,
                    JsonRequestBehavior = behavior,
                    FormateStr = "yyyy-MM-dd HH:mm:ss"
                };
            }
     
            /// <summary>
            /// 返回JsonResult.24         /// </summary>
            /// <param name="data">数据</param>
            /// <param name="behavior">行为</param>
            /// <param name="format">json中dateTime类型的格式</param>
            /// <returns>Json</returns>
            public JsonResult MyJson(object data, JsonRequestBehavior behavior, string format)
            {
                return new CustomJsonResult
                {
                    Data = data,
                    JsonRequestBehavior = behavior,
                    FormateStr = format
                };
            }
     
            /// <summary>
            /// 返回JsonResult42         /// </summary>
            /// <param name="data">数据</param>
            /// <param name="format">数据格式</param>
            /// <returns>Json</returns>
            public JsonResult MyJson(object data, string format)
            {
                return new CustomJsonResult
                {
                    Data = data,
                    FormateStr = format
                };
            }
            /// 返回JsonResult
            /// </summary>
            /// <param name="data">数据</param>
            /// <param name="contentType">内容类型</param>
            /// <param name="contentEncoding">内容编码</param>
            /// <param name="behavior">行为</param>
            /// <returns>JsonReuslt</returns>
            public JsonResult Json4(object data, string contentType, System.Text.Encoding contentEncoding, string format)
            {
                return new CustomJsonResult
                {
                    Data = data,
                    ContentType = contentType,
                    ContentEncoding = contentEncoding,
                    FormateStr = format
                };
            }
            #endregion
        }
    ----------------------至于微笑天使那个类以前发过,如果再找不到了可以咨询QQ83199235
    QQ:83199235
  • 相关阅读:
    leetcode8.字符串转换整数(atoi)
    leetcode7、整数反转
    leetcode6.Z字形变换
    leetcode5.最长回文子串
    leetcode4.寻找两个正序数组的中位数
    leetcode3. 无重复字符的最长子串
    leetcode 2.两数相加
    leetcode 1. 两数之和
    post&get请求总结
    oracle知识总结
  • 原文地址:https://www.cnblogs.com/softcg/p/6510889.html
Copyright © 2020-2023  润新知