兄跌 你看到这篇文章的时候已经找到答案了。
我在解决这个问题的端倪的时候已经浪费了我一个下午的休假时间。
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]. 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