Asp.Net Mvc表单提交(批量提交)
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表单提交(批量提交)的更多相关文章
- ASP.NET\ASP.NET MVC表单提交遇到的问题结论
同步提交的两种基本方式 1,用type=“submit”按钮.form没有必要runat=“server” <form method="post" action=" ...
- ASP.NET MVC 表单的几种提交方式
下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...
- Spring MVC表单防重复提交
利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RU ...
- asp.net mvc表单提交的几种方式
asp.net MVC中form提交和控制器接受form提交过来的数据 MVC中form提交和在控制器中怎样接受 1.cshtml页面form提交2.控制器处理表单提交数据4种方式方法1:使用传统的R ...
- Asp.Net Mvc表单提交之List集合
一.说明 1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大 ...
- ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...
- asp.net mvc 表单相关
1. <form action="/controller/action" method="post"> ... </form> *act ...
- Asp.net Mvc 表单验证(气泡提示)
将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...
- asp.net mvc表单异步提交
html代码: @using (Html.BeginForm("xx", "xx", FormMethod.Post, new { enctype = &quo ...
随机推荐
- 【文文殿下】ExBSGS
无需逆元版本: #include<cstdio> #include<cassert> #include<cmath> #include<map> typ ...
- django 自定义中间件 middleware
Django 中间件 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强 ...
- java的几种定时任务
本篇博文主要是讲述2.x 版本的quartz下的实现方案,1.x 版本的实现方式大致原理一致,但是具体的实现方式有些不一致,具体体现在获取 scheduler 这个类的方式上有些不同,这里不作过多的 ...
- 《JAVA与模式》之代理模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述代理(Proxy)模式的: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结 ...
- Understanding Undefined Behavior
"undefined behavior: behavior for which this International Standard imposes no requirements.&qu ...
- 使用泛型SwingWorker与EDT事件分发线程保持通讯
为什么要使用SwingWorker 在swing开发中,如果一个应用程序,执行一些任务,需要大量的时间来完成,比如下载一个大文件或执行一个复杂的数据库查询. 我们假设这些任务是由用户使用一个按钮触发的 ...
- vue项目打包后路径出错
安装完vue后搭建了一个项目,直接执行 npm run dev 是可以正常打开页面的: 但是执行 npm run build 打包项目后打开却报错了,如下: 原来是项目中的静态文件路径报错了... 然 ...
- mahout学习
参考:http://www.360doc.com/content/14/0117/09/1200324_345883534.shtml Precondition: 启动Hadoop集群 bin/hdf ...
- Jsp页面用ajax传输json数组的方法
详细参考jquery的API 这里主要展示实例,即写法 <%@ page language="java" contentType="text/html; chars ...
- Android六大基本布局
一.基本理论Android六大基本布局分别是:线性布局LinearLayout.表格布局TableLayout.相对布局RelativeLayout.层布局FrameLayout.绝对布局Absolu ...