向mvc controller传递json数组

对于这个主题我没有找到最合适的办法,只是找出了个可以暂时规避问题的方法。发到这里非常希望各位大侠,能给小弟些思路解决此问题。

 

一开始的需求

本想实现这么一个功能

这里的

 

var titles = [{ title: "ONE",List: ["1", "2"] },{ title: "TWO", List: ["2","8"] },{ title: "THREE", List: ["3","6"] },{ title: "FOUR", List: ["4","7"] },{ title: "FIVE",List:["4","5"]}];function sendAjax() {var array = titles[0].List;//做测试,就直接用第一个了//var data = $.toJSON(array);$.ajax({url: "/Store/GetData",type: "POST",dataType: 'json',data: {listVar:array,limit:10},contentType: "application/json",success:DataArrange});}

 

后台的程序

 

        [HttpPost()]public ActionResult GetHotStores(List<String> listVar,int? limit){//会传回数据并显示var results=*****;return JSON("results",JsonRequestBehavior.AllowGet);}


这个是我最一开始的程序,刚一开始,发现整个程序怎么也不起作用(可以传到后台),一顿调试,发现时没有把json数据字符串化,后来使用了jqueryToJSON进行了字符串化,
字符串化后,limit可以认出了,但是对于数组格式的listVar始终传来时null,网上遍寻资料。发现再处理数组时候需要加入属性对数据进行预处理。于是自定义了一个属性

 

 

 

        public class JsonFilter : ActionFilterAttribute{public string Param { get; set; }public Type JsonDataType { get; set; }public override void OnActionExecuting(ActionExecutingContext filterContext){if (filterContext.HttpContext.Request.ContentType.Contains("application/json")){string inputContent;using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream)){inputContent = sr.ReadToEnd();}var jss = new JavaScriptSerializer();var result = jss.Deserialize(inputContent, JsonDataType);filterContext.ActionParameters[Param] = result;}}}

 

并加在了后台程序的前面,于是后台程序就变成了

 

 

        [HttpPost()][JsonFilter(Param = "listVar", JsonDataType = typeof(List<String>))]public ActionResult GetData(List<String> listVar,int? limit){//会传回数据并显示var results=*****;return JSON("results",JsonRequestBehavior.AllowGet);}


此时,继续调试,断点设置在属性内,发现数据传进来了,但是无法被正确解析,经过多方面调试,发现最终需要把程序变成如下形式方可:
总结起来就是,传数组的话就只是传数组,形式如["213","23434"]而不要加其他的什么参数名,不可是{array:["213","23434"]}
,如果,写成这样的话JavaScriptSerializer是无法解析的。因为项目赶进度,我只能先暂时做一定得调整把程序改成了
后台

 

 

        [HttpPost()][JsonFilter(Param = "listVar", JsonDataType = typeof(List<String>))]public ActionResult GetData(List<String> listVar){//会传回数据并显示var results=*****;return JSON("results",JsonRequestBehavior.AllowGet);}


去掉了limit参数
对于前段

 

 

 

     function sendAjax() {var array = titles[0].List;//做测试,就直接用第一个了var data = $.toJSON(array);//添加的地方$.ajax({
url: "/Store/GetData",
type: "POST",
dataType: 'json',
data: data,//变成了只是传数组
contentType: "application/json",
success:DataArrange
}
);}

 

经过了这样的调整一切正常了。但是感觉里面有很多要改进的地方,但是实在没有时间再研究了。本人水平尚属初学,有不足的地方望大家指正

转载于:https://www.cnblogs.com/JosephLiu/archive/2010/02/27/1674635.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我常用的在线取色器

颜色明淡 http://www.colorschemer.com/online.html 2.http://tool.cc/color/ 转载于:https://www.cnblogs.com/xiaoliu66007/p/5145955.html

大家好!欢迎来到我的博客!

大家好&#xff0c;欢迎你们来到我的博客&#xff0c;我是你们的好朋友egg&#xff0c;一个疯狂的Java爱好者&#xff01;这里我会分享一个程序员成长所需的点点滴滴&#xff0c;以Java为主体&#xff0c;从基础到高级知识都会不断的出炉&#xff01;真心欢迎每一位读者朋友&am…

PHP开发erp账号登陆问题,浪潮ERP软件E系列创建账套时提示“由于登陆不正确、请重新登陆” | 浪潮888博客...

浪潮ERP软件E系列创建账套时提示“由于登陆不正确、请重新登陆”数 据 库&#xff1a; MSDE2000软件版本&#xff1a; E4 软件模块&#xff1a; 账套管理问题描述&#xff1a;E系列创建账套时提示“由于登陆不正确、请重新登陆”产生原因&#xff1a; 无解决方法&#xff1a;首…

python支持向量机回归_Python中支持向量机SVM的使用方法详解

除了在Matlab中使用PRTools工具箱中的svm算法&#xff0c;Python中一样可以使用支持向量机做分类。因为Python中的sklearn库也集成了SVM算法&#xff0c;本文的运行环境是Pycharm。 一、导入sklearn算法包 Scikit-Learn库已经实现了所有基本机器学习的算法&#xff0c;具体使用…

c#正则表达式

到目前为止&#xff0c;许多的编程语言和工具都包含对正则表达式的支持&#xff0c;当然.NET也不例外&#xff0c;.NET基础类库中包含有一个名称空间和一系列可以充分发挥规则表达式威力的类。 正则表达式的知识可能是不少编程人员最烦恼的事儿了。如果你还没有规则表达…

linux awk命令详解

简介 awk是一个强大的文本分析工具&#xff0c;相对于grep的查找&#xff0c;sed的编辑&#xff0c;awk在其对数据分析并生成报告时&#xff0c;显得尤为强大。简单来说awk就是把文件逐行的读入&#xff0c;以空格为默认分隔符将每行切片&#xff0c;切开的部分再进行各种分析处…

python3网络爬虫开发实战豆瓣_大牛程序员教你1天入门Python3 网络爬虫例子

在我们日常上网浏览网页的时候&#xff0c;经常会看到一些好看的图片&#xff0c;我们就希望把这些图片保存下载&#xff0c;或者用户用来做桌面壁纸&#xff0c;或者用来做设计的素材。其实我们可以通过python 来实现这样一个简单的爬虫功能&#xff0c;把我们想要的代码爬取到…

解决了界面上菜单项跑到其它AE控件后面的问题(java)

菜单项竟然跑到后面去了&#xff0c;搞了好多天&#xff0c;终于解决了 只要把这句代码放到main()的最前面就可以了 JPopupMenu.setDefaultLightWeightPopupEnabled(false); 转载于:https://www.cnblogs.com/bluemaplestudio/archive/2010/02/28/1675171.html

There is no public key available for the following key IDs: 3B4FE6ACC0B21F32

Ubuntu报错&#xff1a;There is no public key available for the following key IDs: 3B4FE6ACC0B21F32 解决办法&#xff1a;# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32# apt-get update 转载于:https://blog.51cto.com/yangzhiming/17…

微软工程师测试题——未来

一&#xff0c;选择题&#xff08;皆为单选&#xff09;&#xff1a; 1&#xff0c;以下谁是二进制思想的最早提出者&#xff1f; a&#xff0c;伏羲&#xff1b;b&#xff0c;姬昌&#xff1b;c&#xff0c;莱布尼茨&#xff1b;d&#xff0c;柏拉图。 答案&#xff1a;A 解释…

matlab利用霍夫,基于matlab的霍夫变换

霍夫变换(限量版)基于matlab的霍夫变换 一、简单介绍Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性&#xff0c;将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问…

python网站用什么数据库_PyMySQL数据库的使用

前面我们学习了SQLite数据库的相关内容&#xff0c;我们也通过前面的内容学习到了数据库的相关操作&#xff0c;PyMySQL数据库的操作和前面的内容类似&#xff0c;但我们可以通过Navicat直接来查看数据库中的内容&#xff0c;实现数据可视化&#xff0c;前面我们已经完成了下载…

宏与内联(inline)的区别(转载)

先转载下人家总结的宏和普通函数调用的区别&#xff1a;(1)、宏只做简单的字符串替换&#xff0c;函数是参数传递&#xff0c;所以必然有参数类型检查(支持各种类型&#xff0c;而不是只有字符串)。(2)、宏不经计算而直接替换参数&#xff0c;函数调用则是将参数表达式求值再传…

C++_系列自学课程_第_12_课_结构体

1 #include <iostream>2 #include <string>3 4 using namespace std;5 6 struct CDAccount7 {8 double balance; //余额9 double rate; //利息10 int term; //存期11 };12 13 struct Date14 {15 int year;16 int month;17 int…

PHP盈亏问题,小升初数学必考经典应用题—盈亏问题!(附经典例题分析)

这种题目中往往有两种分配方案&#xff0c;每种分配方案的结果会出现多(盈)或少(亏)的情况&#xff0c;通常把这类问题&#xff0c;叫做盈亏问题(也叫做盈不足问题)。解答这类问题时&#xff0c;应该先将两种分配方案进行比较&#xff0c;求出由于每份数的变化所引起的余数的变…

javascript php 之间传递 中文 避免乱码

在javascript代码中用encodeURIComponent()函数处理中文字符串&#xff0c; JS代码&#xff1a; <mce:script type”text/javascript”><!-- string encodeURIComponent(string); location.href index.php?keyword’string; // --></mce:script> PHP代码…

web 服务器 内存 影响_高性能服务器架构思路「不仅是思路」

在服务器端程序开发领域&#xff0c;性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而&#xff0c;服务器端程序在性能问题上应该有何种基本思路&#xff0c;这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问…

JavaScript函数 this调用规则

不是我翻译的&#xff0c;但是觉得不错&#xff0c;为了分享&#xff0c;只好... JavaScript函数调用规则一 (1)全局函数调用&#xff1a; function makeArray( arg1, arg2 ){ return [this , arg1 , arg2 ]; } 这是一个最常用的定义函数方式。相信学习JavaScript的人对它…

100~200之间的素数(及其四个优化方案)

要求素数&#xff0c;首先我们要知道什么是素数&#xff0c;在解题的时候&#xff0c;不要急着去寻找方法解题&#xff0c;而是要先了解它的根本&#xff0c;才可以在遇到类似题的时候轻松面对解决质数(prime number)又称素数&#xff0c;有无限个。一个大于1的自然数&#xff…

Asp.net 请求中变量的保存方式

Session: 当前浏览器用户&#xff0c;在浏览器关闭后或者是指定时间后&#xff08;默认为20分钟&#xff09;失效 同时根据Session的存储方式&#xff0c;有不同的情况&#xff1a; InProc&#xff1a;该模式Session将会被保存在IIS进程中&#xff0c;如果IIS进程重启&#xff…