筛选器:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using System.Runtime.Serialization.Json;
  7.  
  8. namespace BP_RFID_WMS.Controllers
  9. {
  10. /// <summary>
  11. /// Request.InputStream流筛选器
  12. /// </summary>
  13. public class JsonStringFilter : ActionFilterAttribute
  14. {
  15. /// <summary>
  16. /// 参数
  17. /// </summary>
  18. public string Param
  19. {
  20. get;
  21. set;
  22. }
  23.  
  24. /// <summary>
  25. /// 接受Request.InputStream流的POST数据Encoding为utf-8编码的字符串
  26. /// </summary>
  27. /// <param name="filterContext"></param>
  28. public override void OnActionExecuting(ActionExecutingContext filterContext)
  29. {
  30. if ((filterContext.HttpContext.Request.ContentType ?? string.Empty).Contains("application/json"))
  31. {
  32. try
  33. {
  34. byte[] byts = new byte[filterContext.HttpContext.Request.InputStream.Length];
  35. filterContext.HttpContext.Request.InputStream.Read(byts, 0, byts.Length);
  36. string req = System.Text.Encoding.UTF8.GetString(byts);
  37. req = filterContext.HttpContext.Server.UrlDecode(req);
  38. filterContext.ActionParameters[Param] = req;
  39. }
  40. catch (Exception ex)
  41. {
  42. Com.DataCool.DotNetExpand.LogHelper.Error(ex);
  43. }
  44. }
  45. }
  46. }
  47. }

  Controller(注意写法,写个标签就OK了 [JsonStringFilter(Param = "entity")]

):

  1. [JsonStringFilter(Param = "entity")]
  2. public JsonResult SaveGridDataToExcelFile(string entity)
  3. {
  4. if (!string.IsNullOrEmpty(entity))
  5. {
  6. JObject jsonParams = JObject.Parse(entity);
  7. var gridRows = (JArray)jsonParams["GridRows"];
  8. var gridOptions = (JArray)jsonParams["GridColumnOptions"];
  9. var gridOptionList = (JArray)gridOptions;
  10. //可见的列
  11. List<JObject> gridCols = new List<JObject>();
  12. foreach (JObject j in gridOptionList)
  13. {
  14. if (j.ToString().IndexOf("hidden") == -1)
  15. {
  16. gridCols.Add(j);
  17. }
  18. }
  19. var fileName = jsonParams["ExportFileName"].Value<string>();
  20. string tempFileName = HttpContext.Server.MapPath("~/") + "TemplateFiles\\" + "CommonExcelFile.xls";
  21. FileStream fs = new FileStream(tempFileName, FileMode.Open, FileAccess.Read);
  22. var workBook = new HSSFWorkbook(fs);
  23. workBook.SetSheetName(0, "sheet1");
  24. var sheet = workBook.GetSheetAt(0);
  25. //表头(列),第一行
  26. int newColIndex = 0;
  27. var titleRow = sheet.CreateRow(newColIndex);
  28. int cIndex = 0;
  29. foreach (JObject j in gridCols)
  30. {
  31. titleRow.CreateCell(cIndex).SetCellValue(j["title"].Value<String>());
  32. int width = j["width"].Value<int>() / 6;
  33. if (width > 255)
  34. width = 250;
  35. sheet.SetColumnWidth(cIndex, width * 256);
  36. cIndex++;
  37. }
  38. //行记录
  39. for (int rowIndex = 0; rowIndex < gridRows.Count; rowIndex++)
  40. {
  41. newColIndex++;
  42. var row = sheet.CreateRow(newColIndex);
  43. var jsonEntity = gridRows[rowIndex] as JObject;
  44. for (int colIndex = 0; colIndex < gridCols.Count; colIndex++)
  45. {
  46. string cellValue = string.Empty;
  47. JObject colOption = (JObject)gridCols[colIndex];
  48. string field = colOption["field"].Value<string>();
  49. if (jsonEntity[field].ToString().Length != 0)
  50. cellValue = jsonEntity[field].Value<String>();
  51. row.CreateCell(colIndex).SetCellValue(cellValue);
  52. }
  53. }
  54. MemoryStream newFile = new MemoryStream();
  55. sheet.Workbook.Write(newFile);
  56. using (Reserve_DbEntities db = new Reserve_DbEntities())
  57. {
  58. var resultFile = new AppExportFile();
  59. resultFile.FileGuid = Guid.NewGuid();
  60. resultFile.FileName = fileName;
  61. resultFile.FileCreateDateTime = DateTime.Now;
  62. resultFile.FileStreamByte = newFile.GetBuffer();
  63. db.AddToAppExportFile(resultFile);
  64. db.SaveChanges();
  65. var data = new { fileID = resultFile.FileGuid.ToString() };
  66. return Json(data, JsonRequestBehavior.AllowGet);
  67. }
  68. }
  69. else return Json(string.Empty, JsonRequestBehavior.AllowGet);
  70. }

  

asp.net mvc接收安卓post的json字符串的更多相关文章

  1. spring mvc接收ajax提交的JSON数据,并反序列化为对象

    需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...

  2. asp.net mvc 接收jquery ajax发送的数组对象

    <script type="text/javascript"> $(function () { var obj = { name: "军需品", m ...

  3. asp.net mvc实现rest风格返回json

    实现类似:http://localhost:1799/rest/person/1方式返回一个json内容: 在asp.net mvc中新建一个control rest,然后在其中新增方法: publi ...

  4. JAVA 后台SSM框架接收安卓端的json数据

    最近项目上与安卓端做JSON数据交互,使用的SSM框架,刚开始的时候感觉很简单,想着不就是把安卓端的JSON数据封装为Bean类对象吗? 于是就这样写了 可是这样一直报400,百度原因是因为请求url ...

  5. 160506、Spring mvc新手入门(11)-返回json 字符串的其他方式

    Spring MVC返回 json字符串的方式有很多种方法,这里介绍最简单,也是最常使用的两种方式 一.使用  PrintWriter printWriter  直接输出字符串到返回结果中    不需 ...

  6. asp.net MVC 给Controler传一个JSon集合,后台通过List<Model>接收

    需求情景 View层经常需要通过Ajax像后台发送一个json对象的集合,但是在后台通过List<Model>无法接收,最后只能通过妥协的方式,在后台获取一个json的字符串,然后通过Js ...

  7. spring mvc接收参数方式,json格式返回请求数据

    1 使用方法形参使用变量接收提交的数据 2 在方法的形参中使用模型接收数据 3 如果在提交的表单中有多个数据模型,需要创建一个新的Bean,里面的属性是要接收的对象变量. 4 接收提交的日期字符串,转 ...

  8. ASP.NET MVC获取微信返回的json数据分页

    View @model JiaYe.WeiXin.Models.ViewModels.UserViewModel <div class="pull-left pagination&qu ...

  9. Asp.net C# 把 Datatable转换成JSON 字符串

    First of all, we have to fetch the records from the database (MS Sqlserver) into the C# DataTable, o ...

随机推荐

  1. C# 异步编程3 TPL Task 异步程序开发

    .Net在Framework4.0中增加了任务并行库,对开发人员来说利用多核多线程CPU环境变得更加简单,TPL正符合我们本系列的技术需求.因TPL涉及内容较多,且本系列文章为异步程序开发,所以本文并 ...

  2. 使用mysqladmin extended-status查看MySQL的运行状态脚本

    一个好用的使用mysqladmin extended-status查看MySQL的运行状态脚本: mysqladmin -P3306 -uroot -p -h127. -r -i extended-s ...

  3. centos7安装rabbitmq 总结

    centos7下安装rabbitmq 折腾了三天最后做了以下总结 先查看一电脑名  :示例 #hostname name 查看一下hosts配置文件:如果如下结果,就要修改下 #cat /etc/ho ...

  4. 前端使用 validate , 根据条件进行动态的验证添加

    需求如下: 审核操作的时候,选择“通过” 就不需要验证审核意见,但是选择的是“不通过”,那么需要进行审核意见验证 <script> $(function () { InitValidate ...

  5. 26_ArrayList_HashSet的比较及Hashcode分析

    实体类: package com.itcast.day1; public class ReflectPoint { private int x; public int y; public Reflec ...

  6. Hive-1.2.1_01_安装部署

    前言:该文章是基于 Hadoop2.7.6_01_部署 进行的. 1. Hive基本概念 1.1. 什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库 ...

  7. Alpha冲刺 - 事后诸葛亮

    Alpha冲刺 - 事后诸葛亮 Alpha完成情况表 Stardust(安卓端) 模块 预期计划 现实进展 完成度 登录/注册 登录时,从服务器拉取的数据并同步数据库.获取的数据有:用户名.密码.记录 ...

  8. SAP CRM 忠诚度相关表的关系图

    这是一张有关会员,积分,活动等内容的相关表的关系图,对相关的开发工作会有帮助. 原文标题:Table schema for managing customer loyality 本文链接:http:/ ...

  9. 【数据库】事务,ACID,CAP和一致性

    什么是事务 事务是指由一系列数据库操作组成的一个完整的逻辑过程,这个过程中的所有操作要么都成功,要么都不成功.比如:常见的例子就是银行转账的例子,一次转账操作会包含多个数据库操作,而这些数据库操作需要 ...

  10. cenos下配置Apache+PHP最新版7.1.6+MySQL最新版(5.7.18)

    一.安装Apache,略. 二.安装PHP 1.下载php7 wget -O php7.tar.gz http://cn2.php.net/distributions/php-7.1.6.tar.gz ...