文档章节

Asp.Net Mvc表单提交之List集合

o
 osc_bkdv2it5
发布于 2019/08/19 16:05
字数 713
阅读 64
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Asp.Net Mvc表单提交之List集合

 

一、说明

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

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

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

4.对于List类型,如下

二、List 基础数据类型提交

Html代码

复制代码
<div class="panel panel-default">
    <div class="panel-heading">
       <div class="panel-title"> List 基础数据类型提交</div>
    </div>
    <div class="panel-body">
        <form action="@Url.Action("TestOne")" method="post">
            <div class="form-group">
                <input name="name" value="张三" />
            </div>
            <div class="form-group">
                <input name="name" value="李四" />
            </div>
            <input class="btn btn-success" type="submit" value="提交" />
        </form>
    </div>
</div>
复制代码

Action接收

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

参数传递:

显示结果:

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

复制代码
<div class="panel panel-default">
    <div class="panel-heading">
        <div class="panel-title"> List&lt;Model&gt; 数据类型提交(一)</div>
    </div>
    <div class="panel-body">
        <form action="@Url.Action("TestTwo")" method="post">
            <table>
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Name</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><input name="ID" value="1" /></td>
                        <td><input name="Name" value="张三" /></td>
                    </tr>
                    <tr>
                        <td><input name="ID" value="2" /></td>
                        <td><input name="Name" value="李四" /></td>
                    </tr>
                </tbody>
            </table>
            <input type="submit" class="btn btn-success" id="submit1" value="提交" />
        </form>
    </div>
</div>
复制代码

使用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<Student> 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<Student> list = JsonConvert.DeserializeObject<List<Student>>(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);
复制代码
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
ASP.NET Core Razor Pages 初探

最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新的项目模板。它使用cshtml视图模板,但是没有Controller文件夹。后来才发现这是ASP.NET Core框架新推出的Razor Pages...

Agile.Zhou
04/27
0
0
Razor 保存动态表格

本文转载自 ASP.NET MVC数组模型绑定 ,https://www.cnblogs.com/choon/p/5429065.html 内容根据评论内容中的方式有所调整 在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要...

osc_ujeqpb4c
2019/08/15
3
0
ASP.NET Core Razor Pages 初探

最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新的项目模板。它使用cshtml视图模板,但是没有Controller文件夹。后来才发现这是ASP.NET Core框架新推出的Razor Pages...

osc_kgvf7iif
04/29
17
0
ASP.NET Core Razor Pages 初探

最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新的项目模板。它使用cshtml视图模板,但是没有Controller文件夹。后来才发现这是ASP.NET Core框架新推出的Razor Pages...

Agile.Zhou
04/27
0
0
ASP.NET Core Razor Pages 初探

最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新的项目模板。它使用cshtml视图模板,但是没有Controller文件夹。后来才发现这是ASP.NET Core框架新推出的Razor Pages...

Agile.Zhou
04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈对python pandas中 inplace 参数的理解

这篇文章主要介绍了对python pandas中 inplace 参数的理解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否...

Linux就该这么学
30分钟前
20
0
C++ 从基本数据类型说起

前言 int 在32位和64位操作系统,都是四个字节长度。为了能编写一个在32位和64位操作系统都能稳定运行的程序,建议采用std::int32_t 或者std::int64_t指定数据类型。*与long随操作系统子长变...

osc_sxdofc9c
30分钟前
9
0
游戏音乐的作用以及起源

游戏音乐是由特殊的音乐、语言符号、美学符号组成,在电子游戏的发展下,游戏音乐越来越成熟,游戏音乐与美术相融合,能够带给玩家视觉与声音的感官冲击,形成游戏音乐所具有的独特的审美效果...

奇亿音乐
30分钟前
10
0
2020,最新Model的设计-APP重构之路

很多的app使用MVC设计模式来将“用户交互”与“数据和逻辑”分开,而model其中一个重要作用就是持久化。下文中设计的Model可能不是一个完美的,扩展性强的model范例,但在我需要重构的app中,...

osc_mfzkzkxi
31分钟前
4
0
面对职业瓶颈,iOS 开发人员应该如何突破?

我们经常看到 iOS 开发人员(各种能力水平都有)的一些问题,咨询有关专业和财务发展方面的建议。 这些问题有一个共同点:前面都会说“我现在遇到了职业困境”,然后会问一些诸如“我是否应该...

osc_gfpedeca
32分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部