现前台有如下格式的数据需要传递到后台的controller,

1 public class UpdatePara
2 {
3   public int RoleID { get; set; }
4   public List<int> FunctionIDs { get; set; }
5 }

如果按照常规方式传递,后台的controller代码应该是下面这样的

1 public JsonResult Update(UpdatePara para)
2 {
3   var flag = BLLRolePermission.Update(para.RoleID, para.FunctionIDs);
4    return Json(new { success = flag });
5 }

但是由于这里的FunctionIDs是个数组,如果按照上面这种方式接收参数,我们会发现para.FunctionIDs是null

为了正确获取参数值,我们需要自定义个过滤器,代码如下:

 1 public class JsonFilter : ActionFilterAttribute
 2     {
 3         public string ParamName { get; set; }
 4         public Type JsonDataType { get; set; }
 5
 6         public override void OnActionExecuting(ActionExecutingContext filterContext)
 7         {
 8             string inputContent;
 9             var jss = new JavaScriptSerializer();
10
11             using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream))
12             {
13                 inputContent = sr.ReadToEnd();
14             }
15
16             var result = jss.Deserialize(inputContent, JsonDataType);
17
18             filterContext.ActionParameters[ParamName] = result;
19         }
20     }

然后,对应的Action方法应该加上过滤器标记

1 [JsonFilter(ParamName = "para", JsonDataType = typeof(UpdatePara))]
2 public JsonResult Update(UpdatePara para)
3 {
4   var flag = BLLRolePermission.Update(para.RoleID, para.FunctionIDs);
5
6   return Json(new { success = flag });
7 }

同时要注意下前台ajax传参的时候,json对象要序列化下

1 JSON.stringify({
2             roleID: $('#roleID').val(),
3             functionIDs: functionIDs
4 });

That's all.

转载于:https://www.cnblogs.com/huanghaihua/p/5028677.html

json数组传递到后台controller相关推荐

  1. Js传递数组参数到后台controller的方式

    分享一篇js传递数组参数到后台controller的方法,具有很好的参考价值,希望对大家有所帮助. 传递参数传递字符串,所以要把数组转换为字符串, var arr=[1,23,34,5]; var s ...

  2. 前台传json ajax,ajax使用json数组------前端往后台发送json数组及后台往前端发送json数组...

    1.引子 2.前端往后台传输json数据 JSON.stringify()方法将json对象转为字符串形式.如果不使用**JSON.stringify()**方法,后台的java代码将不能获得json ...

  3. ajax 入参为list_ajax传递给后台数组参数方式

    出自:http://blog.csdn.net/lingxyd_0/article/details/10428785 在项目上用到了批量删除与批量更改状态,前台使用了EasyUI的DataGrid,用 ...

  4. java ajax json 解析json数组对象数组对象数组对象数组_ajax传递包含对象数组的json数据...

    一个简单的demo.用户在前台页面表单输入数据表的信息,数据传递到后台,系统自动在后台创建数据库表(table)的功能. 作为简单demo,这里的表只有"表名","列名& ...

  5. springMVC通过ajax传递参数list对象或传递数组对象到后台

    springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...

  6. 今晚被两个bug 困扰---第一个,小程序数组传递到PHP后台变成了字符串,导致解析失败

    1.今晚被两个bug 困扰-第一个,小程序数组传递到PHP后台变成了字符串,导致解析失败 2.解决方法 小程序部分: var that = this; console.log(this.data.co ...

  7. ajax 入参为list_ajax传递参数list对象或传递数组对象到后台

    springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...

  8. SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解

    前台到后台的流程:前台jsp->后台:controller控制器层->service业务层->DAO数据访问层->数据库model模型层. 从上面流程可知,前台jsp的数据,想 ...

  9. Jquery中使用ajax传json参数并从SpringBoot后台Controller返回消息

    场景 前端通过ajax提交json格式的数据,后台接受到实现具体的业务后 返回给前端消息提示. 实现 html页面代码 <button id="printBtn" class ...

最新文章

  1. c语言第1章以下说法错误的是,计算机等级考试c语言程序设计习题
  2. 你不知道的JavaScript之词法作用域
  3. 菜鸟级三层框架(EF+MVC)项目实战之 系列一 EF零基础创建领域模型
  4. Oracle 备份与恢复学习笔记(6_1)
  5. 20190101.DDD笔记
  6. 2019_7_30python
  7. C# 对程序窗口进程和进程ID
  8. 编译原理—词法分析器(Java)
  9. BASH中字符串的处理
  10. 抽象类与抽象方法 c# 1613720553
  11. 07-OSPF区域类型--NSSA区域/完全NSSA区域
  12. 监控Nginx负载均衡器脚本
  13. Xshell官网免费版
  14. C语言科学计数法中的一个小问题
  15. 数据挖掘技术的来源 历史 研究内容及常用技术
  16. 麻省理工遍地走,6年经验安卓程序员面试微软,靠这份思维脑图拿下Offer!
  17. 用c语言编译频率求波长,频率与波长的换算公式(c=λv)
  18. Excel画横坐标不均分的图表
  19. 第十三届蓝桥杯大赛软件组省赛 Python大学A组 个人题解
  20. 今日全国油价查询2022-03-08

热门文章

  1. python实训报告50000_Python程序设计 实验报告五
  2. git 获取最新代码_程序员必知:这是一份全面 amp; 详细的 Git与Github 介绍指南
  3. Spring Boot文档阅读笔记-构建SOAP的web Service服务
  4. 前端笔记-echarts加载bmap地图
  5. Java工作笔记-Spring Boot + Jdbc + dm7Driver访问数据库(Spring Boot连接达梦数据库)
  6. 使用CMake与VS2012编译OpenCV3.3.0版本
  7. Java高级语法笔记-内部类
  8. html延迟首页,jquery怎么实现延迟执行?
  9. cron 每月最后一个自然日_日乙前瞻:鹿岛樱花谁能冲击亚冠,浦和红钻能否守住最后一个主场...
  10. 宁夏小学三年级计算机下册教案,宁夏信息技术教案