ASP.NET MVC提交LIST列表到后台接收不到数据
兄跌 你看到这篇文章的时候已经找到答案了。
我在解决这个问题的端倪的时候已经浪费了我一个下午的休假时间。所以你应该给我一个赞!!!
不废话了上代码:
Entity(Model)
[Serializable]
public partial class dictionarys
{ #region Model public string id
{
set;
get;
}
/// <summary>
///
/// </summary>
public string parentID
{
set;
get;
}
/// <summary>
///
/// </summary>
public string text
{
set;
get;
}
/// <summary>
///
/// </summary>
public string value
{
set;
get;
}
/// <summary>
///
/// </summary>
public string orderIndex
{
set;
get;
}
/// <summary>
///
/// </summary>
public bool isSystem
{
set;
get;
}
/// <summary>
///
/// </summary>
public bool isDel
{
set;
get;
}
/// <summary>
///
/// </summary>
public DateTime createTime
{
set;
get;
}
/// <summary>
///
/// </summary>
public DateTime updateTime
{
set;
get;
}
#endregion Model }
Controllers的代码如下:
public ActionResult Test1()
{
List<DapperTemplate.Model.dictionarys> list1 = new List<DapperTemplate.Model.dictionarys>();
int i = ;
while (i < )
{
list1.Add(new DapperTemplate.Model.dictionarys()
{
id = Guid.NewGuid().ToString(),
text = "项目" + i,
value = "项目" + i,
parentID = "0000-0000-0000-0000-0000",
orderIndex = i.ToString(),
isSystem = false,
isDel = false,
createTime = DateTime.Now,
updateTime = DateTime.Now, }); i++;
} return View(list1);
}
View的代码如下:
@model List<DapperTemplate.Model.dictionarys>
<form action="/dictionarys/Test" method="post" id="form1">
@for (int i = ; i < Model.Count; i++)
{
<div>
@Html.Raw(string.Format("<input type='text' name='list[{0}].id' value='{1}'/>", i.ToString(), Model[i].id))
@Html.Raw(string.Format("<input type='text' name='list[{0}].text' value='{1}'/>", i.ToString(), Model[i].text))
@Html.Raw(string.Format("<input type='text' name='list[{0}].value' value='{1}'/>", i.ToString(), Model[i].value)) </div>
}
<input type="submit" value="提交" />
</form>
<input type="button" value="提交" id=”button1” />
点击提交监测Chrome流量发现如下:

发现了一个猫腻这是酱紫的规律:
List[0].propertyName
…
…
…
List[1].propertyName
…
…
…
List[2].propertyName
…
…
…
那么我用jquery的ajax提交一个数据对比一下参数格式。
JavaScript代码如下:
var queryParams = {
"list": [
{
"id": "0001",
"text": "0001",
"value": "0001",
"parentID": "0001",
"text": "0001",
"orderIndex": "0001",
"isSystem": 0,
"isDel": 0,
"createTime": "2018-04-22 20:21:00",
"updateTime": "2018-04-22 20:21:00"
}, {
"id": "0002",
"text": "0002",
"value": "0002",
"parentID": "0002",
"text": "0002",
"orderIndex": "0002",
"isSystem": 0,
"isDel": 0,
"createTime": "2018-04-22 20:21:00",
"updateTime": "2018-04-22 20:21:00"
}, {
"id": "0003",
"text": "0003",
"value": "0003",
"parentID": "0003",
"text": "0003",
"orderIndex": "0003",
"isSystem": 0,
"isDel": 0,
"createTime": "2018-04-22 20:21:00",
"updateTime": "2018-04-22 20:21:00"
}, {
"id": "0004",
"text": "0004",
"value": "0004",
"parentID": "0004",
"text": "0004",
"orderIndex": "0004",
"isSystem": 0,
"isDel": 0,
"createTime": "2018-04-22 20:21:00",
"updateTime": "2018-04-22 20:21:00"
}, {
"id": "0005",
"text": "0005",
"value": "0005",
"parentID": "0005",
"text": "0005",
"orderIndex": "0005",
"isSystem": 0,
"isDel": 0,
"createTime": "2018-04-22 20:21:00",
"updateTime": "2018-04-22 20:21:00"
}
]
}
$.ajax({
type: "POST",
dataType: "json",
url: "/dictionarys/Test",
traditional: false,
data: queryParams,
success: function (response) {
alert(JSON.stringify(response));
}
});
点击提交监测Chrome流量发现如下

发现了一个猫腻这是酱紫的规律:
List[0][ propertyName]
…
…
…
List[1][ propertyName]
…
…
…
List[2][ propertyName]
…
…
…
原来是这里有这么个鬼猫腻
List[2]. propertyName和List[2][ propertyName]
音乐响起!
我们不一样!
我们不一样!
我们不一样!
Fuck jquery 序列化提交就是这个鬼样子,我也很绝望啊!!!
于是乎我度娘了一下卧槽卧槽卧槽还真的有解决办法了。
JavaScript代码如下:
function parseParam(param, key) {
var paramStr = ''
if (param instanceof String || param instanceof Number || param instanceof Boolean) {
paramStr += '&' + key + '=' + encodeURIComponent(param)
} else {
$.each(param, function (i, p) {
if (p == null || p == undefined)
return true
var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i)
paramStr += '&' + parseParam(this, k)
})
}
return paramStr.substr(1)
}
调用如下:
$.ajax({
type: "POST",
dataType: "json",
url: "/dictionarys/Test",
traditional: false,
data: parseParam(queryParams),
success: function (response) {
alert(JSON.stringify(response));
}
});
好了可以愉快的玩耍了!!!
哎 西八!
如果这篇文章对您有帮助,您可以打赏我

技术交流QQ群:15129679
ASP.NET MVC提交LIST列表到后台接收不到数据的更多相关文章
- FineAdmin.Mvc 使用ok-admin+ASP.NET MVC搭建的通用权限后台管理系统
FineAdmin.Mvc 介绍 使用ok-admin+ASP.NET MVC搭建的通用权限后台管理系统RightControl后台layui模板不太好看,换成ok-admin v2.0重写一遍.项目 ...
- ASP.NET MVC提交一个较复杂对象至WCF Service
前一篇<jQuery.Ajax()执行WCF Service的方法>http://www.cnblogs.com/insus/p/3727875.html 我们有练习在asp.net mv ...
- 【转】ASP.NET MVC 入门教程列表
ASP.NET MVC小论 2008-12-04 11:11 by T2噬菌体, 8052 visits, 网摘, 收藏, 编辑 摘要:ASP.NET MVC作为微软官方的.NET平台下MVC解决方案 ...
- ASP.NET MVC 学习3、Controller左手从Model获取数据,右手传递到View页面
参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-dat ...
- Spring Mvc 页面传递数组到后台接收
1.定义一个简单的类 User.java public class User { private Integer id; private String name; public Integer get ...
- 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- 关于delete请求,后台接收不到数据
在前端用axios需要这样写 /** * 删除数据 */export function del(url, data = {}) { return axios.delete(url, { data: q ...
- 在asp.net mvc中将checkbox传到后台时总是true的解决方法
我今天在做同城交友网站(www.niyeuwo.com)时发现,不管checkbox是否选 中,传到Controller时总是true,后来在查网上查了资料才知道,原来是jQuery在传值时写错了. ...
- Asp.net mvc上传多张图片后台存储
前台页面通过<file name="img">标签数组上传图片,后台根据Request.Files["img"]来接收前台上传的图片. 1 Syst ...
随机推荐
- setInterval设置停止和循环
原文链接:http://caibaojian.com/setinterval-times.html 需要知道已经经过了多少次或者说过多久就会停止 var timesRun = 0; var inter ...
- Direct3d 设备丢失 (device lost) (转载)
转:http://blog.csdn.net/kuangfengwu/article/details/7674074 1.什么时候设备丢失 一个Direct3D设备, 有两种状态: 操作状态或丢失状态 ...
- android编译错误“OnClickListener cannot be resolved to a type”
在android代码编译时可能会出现如下错误: 部分代码: <span style="font-size:18px;">public void onCreate(Bun ...
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar
Java 操作日期/时间,往往会涉及到Calendar,Date,DateFormat这些类. 最近决定把这些内容系统的整理一下,这样以后使用的时候,会更得心应手.本章的内容是主要讲解“Java时间框 ...
- C#编程(七十二)----------DynamicObject和ExpandoObject
DynamicObject和ExpandoObject 1.ExpandoObject表示一个对象,该对象包含可在运行时动态添加和移除的成员.这个类和动态类型有关,这个类能做些什么? 案例: //Ex ...
- 【Centos】centos查看磁盘使用情况
1.查看分区和磁盘 lsblk 查看分区和磁盘 2.查看空间使用情况 df -h 查看空间使用情况 3.分区工具查看分区信息 fdisk -l 分区工具查看分区信息 4.查看分区 cfdisk /de ...
- CQRS:When to use CQRS
Now that we are at the end of our journey, we can suggest some of the criteria you should evaluate t ...
- python测试开发django-35.xadmin注册表信息
前言 xadmin后台如果要对表的内容增删改查,跟之前的admin.py文件里面写注册表信息一样,需在admin.py同一级目录新建一个adminx.py的文件. 然后在adminx.py文件控制页面 ...
- PL/SQL 存储过程
PL/SQL复习九 存储过程 无参数的存储过程: create or replace procedure out_time is begin dbms_output.put_line(to_char( ...
- Oracle初级索引学习总结
前言 索引是常见的数据库对象,建立索引的目的是为了提高记录的检索速度.它的设置好坏,使用是否得当,极大地影响数据库应用程序和Database的性能.虽然有许多资料讲索引的用法,DBA和Develop ...