HttpPostHelper_获取前台Form表单提交的数据

//1.Josn参数序列化
var obj = HttpPostHelper.DeserializeObject<S_USER>(Request);
S_USER---S_USER类

/****************************** Module Header ******************************
Author: 
Create Date: 2018-10-9
Explain: HttpPost帮助类
Alter History:  
***************************************************************************/
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Script.Serialization;

namespace BD.Common
{
    /// <summary>
    /// HttpPost帮助类
    /// </summary>
    public class HttpPostHelper
    {
        /// <summary>
        /// 保存接收并返回Model实体对象
        /// </summary>
        /// <typeparam Model实体类="T"></typeparam>
        /// <param 控制器层面直接传递Request="Request"></param>
        /// 使用方法:如果JSON里带ID,则ID必须为有值的参数,建议赋“0”,否则会导致JSON为空无法解析而报错。
        /// 前台ajax格式约定: data: JSON.stringify(参数对象),不需要像普通的方法,用data:{ a:'a' , b:'b', c:'c'}
        /// <returns></returns>
        public static T DeserializeObject<T>(HttpRequestBase Request)
        {
            try
            {
                StreamReader sr = new StreamReader(Request.InputStream);
                string stream = sr.ReadToEnd();
                var obj = new JavaScriptSerializer().Deserialize<T>(stream);
                return obj;
            }
            catch (Exception e)
            {
                return default(T);
            }
        }


        /// <summary>
        /// 保存接收并返回Model实体对象
        /// </summary>
        /// <typeparam Model实体类="T"></typeparam>
        /// <param 控制器层面直接传递Request="Request"></param>
        /// 使用方法:如果JSON里带ID,则ID必须为有值的参数,建议赋“0”,否则会导致JSON为空无法解析而报错。
        /// 前台ajax格式约定: data: JSON.stringify(参数对象),不需要像普通的方法,用data:{ a:'a' , b:'b', c:'c'}
        /// <returns></returns>
        public static T DeserializeObject<T>(HttpRequestBase Request, Dictionary<string, string> dic)
        {
            try
            {
                StreamReader sr = new StreamReader(Request.InputStream);

                string stream = sr.ReadToEnd();

                foreach (var item in dic)
                {
                    stream = stream.Replace(item.Key, item.Value);//需要替换 单条
                }
                var obj = new JavaScriptSerializer().Deserialize<T>(stream);
                return obj;
            }
            catch (Exception e)
            {
                return default(T);
            }
        }


        /// <summary>
        /// 保存接收并返回Model实体对象
        /// </summary>
        /// <typeparam Model实体类="T"></typeparam>
        /// <param 控制器层面直接传递Request="Request"></param>
        /// 使用方法:如果JSON里带ID,则ID必须为有值的参数,建议赋“0”,否则会导致JSON为空无法解析而报错。
        /// 前台不约定ajax格式,可任意带参,只需要把json的str丢到这里
        /// <returns></returns>
        public static T DeserializeObject<T>(string strJson)
        {
            try
            {
                var obj = new JavaScriptSerializer().Deserialize<T>(strJson);
                return obj;
            }
            catch (Exception)
            {
                return default(T);
            }
        }

    }
}

前端配合使用套路: var obj = $("#userForm").serializeObject();// 对象
userForm:form表单id
jQuery serializeObject 序列化form表单Json对象


/**
 * 使用场景:ajax提交表单数据
 */
/*
<form>
    <input type="text" name="username" value="123"/>
    <input type="text" name="password"  valur="abc"/>
 </form>
 */
 // 1. serialize() —— 序列化form表单 带name属性的内容为字符串
    JQuery("form").serialize();  
    // "username="123&password="abc"
	
// 2. serializeArray() ——返回JSON 对象数组
    JQuery("form").serializeArray();
    // [{name:"username",value:"123"},{name:"password",value:"abc"}]
 
//  3. 封装一个方法: serializeObject()  ——返回对象
	JQuery("form").serializeObject()
	//{username:"123",passwoed:"123"}
	
    JQuery.prototype.serializeObject = function () {
        var a,o,h,i,e;
        a = this.serializeArray();
        o={};
        h=o.hasOwnProperty;
        for(i=0;i<a.length;i++){
            e=a[i];
            if(!h.call(o,e.name)){
                o[e.name]=e.value;
            }
        }
        return o;
    }

$("#formTable").serializeArray()使用例子

 //获取表单并返回
        function getSearchValue() {
            var val = $("#formTable").serializeArray();
            return JSON.stringify(val);
        }
          $.ajax({
                url: "/salary_Analysis/Query",
                type: "POST",// POST,默认是GET
                dataType: 'json',//根据返回数据类型可以有这些类型可选:xml html script json jsonp text
                async: true,//是否异步请求
                data: {//请求携带的参数信息
                    search: getSearchValue(),
                    
                },
            } )

       public string Query(int limit, int offset, string search)
        {
            dynamic searchJson = JsonConvert.DeserializeObject<dynamic>(search);
         for (int i = 0; i < searchJson.Count; i++)
            {
         if ((string)searchJson[i].name == "所在部门")
                {
                    if ((string)searchJson[i].value != "0")
                    {

          ps:namey与value是人为规定的字段即前台input的name

        }
         }
           }

        }
原文地址:https://www.cnblogs.com/jsll/p/14377072.html