在网上找了半天关于如何从前端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
来源:博客园 (编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|