分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

ASP.NET MVC提交LIST列表到后台接收不到数据

发布时间:2023-09-06 01:50责任编辑:白小东关键词:.NETMVC

兄跌 你看到这篇文章的时候已经找到答案了。

我在解决这个问题的端倪的时候已经浪费了我一个下午的休假时间。所以你应该给我一个赞!!!

不废话了上代码:

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 = 0; ???????????while (i < 5) ???????????{ ???????????????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 = 0; 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]. propertyNameList[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列表到后台接收不到数据

原文地址:https://www.cnblogs.com/yeminglong/p/8910017.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved