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. python django 更改模型字段出错时的一个解决办法

    python/django 框架自带的 orm 无疑是django框架最拿得出手的一个亮点,orm无疑极大的方便了项目的开发,提高了开发的效率. 在实际的项目开发过程中,我们有时候需要修改模型的字段, ...

  2. vsftp小记

    安装一个vsftp都有问题(Version: 3.0.2-14ubuntu1),提示530 错误,之后修改配置如下(红色): # cat /etc/pam.d/vsftpdauth required ...

  3. 深入理解java内存模型

    深入理解Java内存模型(一)——基础 深入理解Java内存模型(二)——重排序 深入理解Java内存模型(三)——顺序一致性 深入理解Java内存模型(四)——volatile 深入理解Java内存 ...

  4. 将url动态转换成二维码插件 - 兼容IE8

    插件地址  http://static.runoob.com/assets/qrcode/qrcode.min.js ,网页直接打开,然后ctrl+s保存到本地. <!DOCTYPE html& ...

  5. Spring Security构建Rest服务-1100-单机Session管理

    Session失效时间: springboot配置session失效时间,只需要在application.properties里配置 #session超时时间,低于60秒按60秒server.sess ...

  6. PlanetTogether APS安装与配置

    一.PT 安装 1.PT Server与Client的下载 下载网址:https://download.planettogether.com/ 2.安装.net framework 4.6.2 安装P ...

  7. LetExpr表达式解读

    Integer a = 0; a++; 举个例子,如下: package com.test19; public class BugReport<T> { private T n; publ ...

  8. Centos虚拟机SVN的安装和使用http方式访问svn服务器

    1.查看是否安装旧版SVNrpm -qa | grep subversion2.卸载旧版本SVNyum remove subversion3.安装SVNyum -y install subversio ...

  9. springcloud-01-介绍

    跟随springcloud的一套视频学习springcloud, 把学到的记录下来, 方便自己, 方便别人 IDE: idea 一个父工程, 其他均为module 父工程的依赖: <parent ...

  10. goldarch企业管理软件框架整体解决方案终于出来了

    所有的图片及解决方案都在我的博客里http://blog.posn.net 框架把企业管理软件开发中要遇到的常用做了组件化处理,达到了通用性和可定制性的目的. goldarch的数据层是spring. ...