博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.Net Mvc表单提交之List集合
阅读量:6406 次
发布时间:2019-06-23

本文共 3183 字,大约阅读时间需要 10 分钟。

一、说明

1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值,

2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大小写

3.对于Model类型的,只要Action参数Model的字段名和input的name相同就行,不区分大小写

4.对于List类型,如下

二、List 基础数据类型提交

Html代码

List 基础数据类型提交

Action接收

public JsonResult TestOne(List
name){ return Json(name);}

参数传递:

显示结果:

三、List<Model>类型提交json数组

List<Model> 数据类型提交(一)
ID Name

使用Ajax提交

$('#submit1').click(function () {            var form = $(this).parents('form');            var result = [];            form.find('tbody tr').each(function () {                var thisItem = $(this);                result.push({                    ID: thisItem.find("input:eq(0)").val(),                    Name: thisItem.find('input:eq(1)').val()                })            });            $.post(form.attr('action'), {                stuList: result, //直接提交json数组            }, function (data) {                alert(data);            });            return false;        });

后台action接收处理

public JsonResult TestTwo(List
stuList){ return Json(stuList);}

参数传递:

 

四、List<Model>类型提交之json数组字符串

HTML内容同上,

整合json数组,以字符串格式传递

$('#submit2').click(function () {    var form = $(this).parents('form');    var result = [];    var data = form.serializeArray();    for (var i = 0; i < data.length; i++) {        var item = data[i];        var stu_i = Math.floor(i / 2); //没2(对象的属性个数)个位一组,整合到一个对象中        if (!result[stu_i])            result[stu_i] = {}; //初始化数组中的对象        result[stu_i][item['name']] = item['value'];    }    console.info(result);    $.post(form.attr('action'), {        stuList: JSON.stringify(result), //提交json字符串,后台自己反序列化        other: 'test'    }, function (data) {        alert(data);    });    return false;});

action后台参数接收处理

public JsonResult TestThree(string stuList, string other = "没有内容"){    //自己反序列化处理,更灵活处理    List
list = JsonConvert.DeserializeObject
>(stuList); return Json(new { stu = list, other = other });}

参数传递:

返回结果:

特别说明

提交的Josn数组整合方式1:从页面dom中获取

//处理方式1,从页面获取值var result = [];form.find('tbody tr').each(function () {    var thisItem = $(this);    result.push({        ID: thisItem.find("input:eq(0)").val(),        Name: thisItem.find('input:eq(1)').val()    })});

整合方式2:从表单的序列化数组中获取

var result = [];var data = form.serializeArray();for (var i = 0; i < data.length; i++) {    var item = data[i];    var stu_i = Math.floor(i / 2); //没2(对象的属性个数)个位一组,整合到一个对象中    if (!result[stu_i])        result[stu_i] = {}; //初始化数组中的对象    result[stu_i][item['name']] = item['value'];}console.info(result);

 

更多:

转载地址:http://vxtea.baihongyu.com/

你可能感兴趣的文章
WPF路径动画(动态逆向动画)
查看>>
ESXi 主机创建datastore失败
查看>>
day3-函数介绍
查看>>
Low Level Reader Protocol (LLRP) 简介
查看>>
[Micropython]TPYBoard v10x NRF24L01无线通讯模块使用教程
查看>>
mysql中show processlist过滤和杀死线程
查看>>
dxRangeTrackBar使用教程
查看>>
最新Sublime Text 2 激活 汉化
查看>>
spring为什么推荐使用构造器注入
查看>>
C# 使用反射 遍历输出 对象的属性
查看>>
基础数据类型之字典
查看>>
第七次作业
查看>>
Oracle中NVARCHAR2与VARCHAR2的区别
查看>>
php debug
查看>>
新的一天,新的开始。
查看>>
<img> <a> CSS
查看>>
JS call和apply方法使用
查看>>
使用JavaScript设置、获取父子页面中的值
查看>>
在vue中如何实现购物车checkbox的三级联动
查看>>
华为C8812 手机连接电脑的问题
查看>>