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

采用form表单提交

name=value类型,只要Action参数的变量名和input的name相同就行

html代码:

<form action="@Url.Action("Test")" method="post">
<div class="form-group">
<input name="name" value="吕布" />
</div>
<input class="btn btn-success" type="submit" value="提交" />
</form>

C#代码

public JsonResult Test(string name)
{
return Json(name);
}

对于Model类型的,只要Action参数Model的字段名和input的name相同就行

html如下:

<form action="@Url.Action("Test")" method="post">
<div class="form-group">
<input name="name" value="吕布" />
</div>
<div class="form-group">
<input name="sex" value="男" />
</div>
<input class="btn btn-success" type="submit" value="提交" />
</form>

C#代码需对应改动:

public class Person
{
public string name;
public string sex;
} public JsonResult Test(Person person)
{
//相关代码
}

采用ajax提交

构造object,object字段和Action参数变量名相同或者和接收参数定义Model类型相同就行

HTML和C#代码如上,js代码改动

var person ={
name = 获取表单的name值;
sex = 获取表单的sex值;
}
$.ajax({
url: options.url,
data: person,
type: options.type,
dataType: options.dataType,
success: function (data) {
if (data.type == "3") {
dialogAlert(data.message, -1);
} else {
Loading(false);
dialogMsg(data.message, 1);
options.success(data);
if (options.close == true) {
dialogClose();
}
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
Loading(false);
dialogMsg(errorThrown, -1);
},
beforeSend: function () {
Loading(true, options.loading);
},
complete: function () {
Loading(false);
}
});

以上介绍的都是单个值提交和一个model提交,理解和使用相对比较简单,对于List类型,很多时候不知所错,当然比较笨的方法,可以用js代码写个循环一个一个提交。

数据量小的话,这种方法还能接受,如果大批量插入的话,这种方法对应前后台性能都有大大的影响。下面介绍批量提交

对于List<string>类型

html代码如下:

<form action="@Url.Action("Test")" 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>

C#代码如下

public JsonResult Test(List<string> name)
{
//自己代码
}

对于list<Model>类型,解决方法如下:

html代码如下:

<form action="@Url.Action("Test")" method="post">
<div class="form-group">
<input id="name1" name="name" value="吕布" />
<input id="sex1" name="name" value="男" />
</div>
<div class="form-group">
<input id="name2" name="name" value="貂蝉" />
<input id ="sex2" name="name" value="女" />
</div>
<input class="btn btn-success" type="submit" value="提交" />
</form>

js代码如下:

var postArr = [];
var arr = new Array(2);
for (var i = 0; i < arr.length; i++) {
let postData = {
"name":$("#name"+i),
"sex": $("#sex"+i)
postArr.push(postData);
} $.ajax({
url: ../control名字/Test,
data: {personList:postArr},//这个地方请注意!!!参数和C#代码保持一致
type: options.type,
dataType: options.dataType,
success: function (data) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
},
beforeSend: function () {
},
complete: function () {
}
});

C#代码如下:

public JsonResult Test(List<Person> personList)
{
//自己代码
}

当然还有一种方法,只需做一下变通,将json数组对象转为json字符串

HTML内容同上,js代码修改如下:

var postArr = [];
var arr = new Array(2);
for (var i = 0; i < arr.length; i++) {
let postData = {
"name":$("#name"+i),
"sex": $("#sex"+i)
postArr.push(postData);
} $.ajax({
url: "../control名字/Test?other"=其他值,
data: {personList:JSON.stringify(postArr)},//这个地方请注意!!!参数和C#代码保持一致
type: options.type,
dataType: options.dataType,
success: function (data) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
},
beforeSend: function () {
},
complete: function () {
}
});

C#代码如下:

public JsonResult Test(string personList, string other = 其他值)
{
//反序列化处理
List<Student> list = JsonConvert.DeserializeObject<List<Person>>(personList);
//其他逻辑
}

Asp.Net Mvc表单提交(批量提交)的更多相关文章

  1. ASP.NET\ASP.NET MVC表单提交遇到的问题结论

    同步提交的两种基本方式 1,用type=“submit”按钮.form没有必要runat=“server” <form method="post" action=" ...

  2. ASP.NET MVC 表单的几种提交方式

    下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...

  3. Spring MVC表单防重复提交

    利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RU ...

  4. asp.net mvc表单提交的几种方式

    asp.net MVC中form提交和控制器接受form提交过来的数据 MVC中form提交和在控制器中怎样接受 1.cshtml页面form提交2.控制器处理表单提交数据4种方式方法1:使用传统的R ...

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

    一.说明 1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大 ...

  6. ASP.NET MVC 表单提交多层子级实体集合数据到控制器中

    于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...

  7. asp.net mvc 表单相关

    1. <form action="/controller/action" method="post"> ... </form> *act ...

  8. Asp.net Mvc 表单验证(气泡提示)

    将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...

  9. asp.net mvc表单异步提交

    html代码: @using (Html.BeginForm("xx", "xx", FormMethod.Post, new { enctype = &quo ...

随机推荐

  1. NLP1 —— Python自然语言处理环境搭建

    最近开始研究自然语言处理了,所以准备好好学习一下,就跟着<Python自然语言处理>这本书,边学边整理吧 安装 Mac里面自带了python2.7,所以直接安装nltk就可以了. 默认执行 ...

  2. C# 证书打印《六》

    整理思路,从新出发. 加载模版 public void loadtemplate(Label lable) { string p_tempateFile = @"fomate.xml&quo ...

  3. day 43 mysql 学习 以及pymysql 学习

    前情提要: 本次主要学习sql 的难点, 多表查询以及连接python  一:多表关联 >多表查询的缺点 二:单表的连表查询[自关联查询] 三:子查询 >主查询 >主查询 >主 ...

  4. 【NOIP2018】保卫王国 动态dp

    此题场上打了一个正确的$44pts$,接着看错题疯狂$rush$“正确”的$44pts$,后来没$rush$完没将之前的代码$copy$回去,直接变零分了..... 这一题我们显然有一种$O(nm)$ ...

  5. 【BZOJ3992】【SDOI2015】序列统计 EGF+多项式快速幂+循环卷积

    如果是求$n$个数之和在模$m$意义下为$x$,那么做法是显然的. 但是这道题问的是$n$个数之积在模m意义下为$x$,那么做法就和上面的问题不同. 考虑如何把乘法转换成加法(求log): 题目中有一 ...

  6. while 语句

    /* while循环 格式:while(循环保持条件){需要执行的语句} OC: int i = 0; int sum = 0; while (i <= 10) { sum = i++; } w ...

  7. R软件常用命令

    1.getwd()      获取默认的目录 2.> mydata <- read.csv("1.csv")  读取1.csv文件中的数据,并赋值给一个mydata的对 ...

  8. tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了

    tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了 感觉它能找到词与词之间的关系,应该可以用来做推荐系统.自动摘要.相关搜索.联想什么的 tensorflow1.1.0 ...

  9. HBase Cli相关操作

    修改HBase表结构之前首先需要disable表,然后进行更改相关表结构信息,最后enable表,如下 1. 动态添加一个或多个列簇 hbase(main):034:0> describe 'H ...

  10. 【es6】class

    class是es6引入的最重要特性之一.在没有class之前,我们只能通过原型链来模拟类. 基本用法 如果你用过java这样的纯面向对象语言,那么你会对class的语法非常熟悉. class Peop ...