asp.net mvc接收安卓post的json字符串
筛选器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Runtime.Serialization.Json; namespace BP_RFID_WMS.Controllers
{
/// <summary>
/// Request.InputStream流筛选器
/// </summary>
public class JsonStringFilter : ActionFilterAttribute
{
/// <summary>
/// 参数
/// </summary>
public string Param
{
get;
set;
} /// <summary>
/// 接受Request.InputStream流的POST数据Encoding为utf-8编码的字符串
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if ((filterContext.HttpContext.Request.ContentType ?? string.Empty).Contains("application/json"))
{
try
{
byte[] byts = new byte[filterContext.HttpContext.Request.InputStream.Length];
filterContext.HttpContext.Request.InputStream.Read(byts, 0, byts.Length);
string req = System.Text.Encoding.UTF8.GetString(byts);
req = filterContext.HttpContext.Server.UrlDecode(req);
filterContext.ActionParameters[Param] = req;
}
catch (Exception ex)
{
Com.DataCool.DotNetExpand.LogHelper.Error(ex);
}
}
}
}
}
Controller(注意写法,写个标签就OK了 [JsonStringFilter(Param = "entity")]
):
[JsonStringFilter(Param = "entity")]
public JsonResult SaveGridDataToExcelFile(string entity)
{
if (!string.IsNullOrEmpty(entity))
{
JObject jsonParams = JObject.Parse(entity);
var gridRows = (JArray)jsonParams["GridRows"];
var gridOptions = (JArray)jsonParams["GridColumnOptions"];
var gridOptionList = (JArray)gridOptions;
//可见的列
List<JObject> gridCols = new List<JObject>();
foreach (JObject j in gridOptionList)
{
if (j.ToString().IndexOf("hidden") == -1)
{
gridCols.Add(j);
}
}
var fileName = jsonParams["ExportFileName"].Value<string>();
string tempFileName = HttpContext.Server.MapPath("~/") + "TemplateFiles\\" + "CommonExcelFile.xls";
FileStream fs = new FileStream(tempFileName, FileMode.Open, FileAccess.Read);
var workBook = new HSSFWorkbook(fs);
workBook.SetSheetName(0, "sheet1");
var sheet = workBook.GetSheetAt(0);
//表头(列),第一行
int newColIndex = 0;
var titleRow = sheet.CreateRow(newColIndex);
int cIndex = 0;
foreach (JObject j in gridCols)
{
titleRow.CreateCell(cIndex).SetCellValue(j["title"].Value<String>());
int width = j["width"].Value<int>() / 6;
if (width > 255)
width = 250;
sheet.SetColumnWidth(cIndex, width * 256);
cIndex++;
}
//行记录
for (int rowIndex = 0; rowIndex < gridRows.Count; rowIndex++)
{
newColIndex++;
var row = sheet.CreateRow(newColIndex);
var jsonEntity = gridRows[rowIndex] as JObject;
for (int colIndex = 0; colIndex < gridCols.Count; colIndex++)
{
string cellValue = string.Empty;
JObject colOption = (JObject)gridCols[colIndex];
string field = colOption["field"].Value<string>();
if (jsonEntity[field].ToString().Length != 0)
cellValue = jsonEntity[field].Value<String>();
row.CreateCell(colIndex).SetCellValue(cellValue);
}
}
MemoryStream newFile = new MemoryStream();
sheet.Workbook.Write(newFile);
using (Reserve_DbEntities db = new Reserve_DbEntities())
{
var resultFile = new AppExportFile();
resultFile.FileGuid = Guid.NewGuid();
resultFile.FileName = fileName;
resultFile.FileCreateDateTime = DateTime.Now;
resultFile.FileStreamByte = newFile.GetBuffer();
db.AddToAppExportFile(resultFile);
db.SaveChanges();
var data = new { fileID = resultFile.FileGuid.ToString() };
return Json(data, JsonRequestBehavior.AllowGet);
}
}
else return Json(string.Empty, JsonRequestBehavior.AllowGet);
}
asp.net mvc接收安卓post的json字符串的更多相关文章
- spring mvc接收ajax提交的JSON数据,并反序列化为对象
需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...
- asp.net mvc 接收jquery ajax发送的数组对象
<script type="text/javascript"> $(function () { var obj = { name: "军需品", m ...
- asp.net mvc实现rest风格返回json
实现类似:http://localhost:1799/rest/person/1方式返回一个json内容: 在asp.net mvc中新建一个control rest,然后在其中新增方法: publi ...
- JAVA 后台SSM框架接收安卓端的json数据
最近项目上与安卓端做JSON数据交互,使用的SSM框架,刚开始的时候感觉很简单,想着不就是把安卓端的JSON数据封装为Bean类对象吗? 于是就这样写了 可是这样一直报400,百度原因是因为请求url ...
- 160506、Spring mvc新手入门(11)-返回json 字符串的其他方式
Spring MVC返回 json字符串的方式有很多种方法,这里介绍最简单,也是最常使用的两种方式 一.使用 PrintWriter printWriter 直接输出字符串到返回结果中 不需 ...
- asp.net MVC 给Controler传一个JSon集合,后台通过List<Model>接收
需求情景 View层经常需要通过Ajax像后台发送一个json对象的集合,但是在后台通过List<Model>无法接收,最后只能通过妥协的方式,在后台获取一个json的字符串,然后通过Js ...
- spring mvc接收参数方式,json格式返回请求数据
1 使用方法形参使用变量接收提交的数据 2 在方法的形参中使用模型接收数据 3 如果在提交的表单中有多个数据模型,需要创建一个新的Bean,里面的属性是要接收的对象变量. 4 接收提交的日期字符串,转 ...
- ASP.NET MVC获取微信返回的json数据分页
View @model JiaYe.WeiXin.Models.ViewModels.UserViewModel <div class="pull-left pagination&qu ...
- Asp.net C# 把 Datatable转换成JSON 字符串
First of all, we have to fetch the records from the database (MS Sqlserver) into the C# DataTable, o ...
随机推荐
- 10-openldap同步原理
openldap同步原理 阅读视图 openldap同步原理 syncrepl.slurpd同步机制优缺点 OpenLDAP同步条件 OpenLDAP同步参数 1. openldap同步原理 Open ...
- 总结Hibernate4.1+版本与Hibernate3.3+版本区别
利用休假时间好好学习了当今流行的ORMapping框架-Hibernate,看完了马士兵老师经典的Hibernate视频教程,也算是小小入门了吧. 马老师在讲课中使用的Hibernate版本是3.3. ...
- 【 PostgreSQL】查询某模式下所有表的分布键信息
想看下某模式下所有表创建的分布键是否合理,查找系统表文档拼出如下sql,亲们如果有更好的sql或者意见欢迎留言! SELECT aaa.nspname AS "模式名", ...
- sql最简单的查询语句
-- 2 **************************************************** -- 最简单的查询语句 -- 2.1 ----------------------- ...
- windows任务管理器怎么知道多个IIS网站进程分别对应哪个网站
摘要: 1.IIS网站对应的进程名一般叫w3wp.exe (windows2008系统为例,其他类似) 2.windows默认的任务管理器只能看到多个同名的进程名w3wp.exe,没法区别分别对应哪个 ...
- .NET Core tasks.json 简介
1.执行命令:dotnet> dotnet new console -o myApp 2.tasks.json文件配置: { "version": "2.0.0&q ...
- 新鲜出炉的jquery fileupload 插件
内容属原创,转载请注明出处 为什么做这个东东 项目中需要用到一个多附件上传的控件,找了一圈没找到中意的(唯一一个中意点的还不开源,费用比较高),这不,只得自己抡刀上了. 需求是什么 这么个上传的东东, ...
- 公式编辑器MathType基本使用方法总结----应付本科毕业论文完全没问题啦^_^
本人计算数学专业毕业,写毕业论文和外文翻译的时候会遇到大量公式需要编辑,而且学校一般都要求用word.但是Word自带的公式编辑器只支持一种字体,当公式中涉及到特殊字体就不太方便了.如果用Latex来 ...
- 使用POI转换word doc文件
目录 1 转换为Html文件 2 转换为Xml文件 3 转换为Text文件 在POI中还存在有针对于word doc文件进行格式转换的功能.我们可以将word的内容 ...
- MyBatis Generator使用示例
一.MBG介绍 MyBatis Generator(MBG)是一个Mybatis的代码生成器,它可以用来生成可以访问(多个)表的基础对象.MBG解决了对数据库操作有最大影响的一些简单的CRUD(插入, ...