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 ...
随机推荐
- Golang 实现守护主进程
package main import ( "fmt" "runtime" "sync" "time" ) func t ...
- [Auto Testing] 工具准备:Selenium 与 ChromeDriver
<留存> Selenium http://selenium-release.storage.googleapis.com/index.html https://www.seleniumhq ...
- 深入理解java内存模型
深入理解Java内存模型(一)——基础 深入理解Java内存模型(二)——重排序 深入理解Java内存模型(三)——顺序一致性 深入理解Java内存模型(四)——volatile 深入理解Java内存 ...
- css 题目笔记(本文收集了一些个人觉得比较有意思的css题目,欢迎大家给出自己的解答)
1.本文收集了一些个人觉得比较有意思的css题目,欢迎大家给出自己的解答 P标签的最大宽度不可以大于H2标签文字宽度的10% 这里应该是P标签的最大宽度由前面的匿名内联元素宽度(就是大字号文字宽度)决 ...
- (转)权威支持: 选择正确的 WebSphere 诊断工具
权威支持: 选择正确的 WebSphere 诊断工具 原文:https://www.ibm.com/developerworks/cn/websphere/techjournal/0807_supau ...
- 对称(DES/AES)与非对称(RSA/SSL/数字证书)加密介绍及实际应用
本文不对具体的算法做深入研究,只是讲解各种安全算法的原理和使用场景. 一.数据校验算法 数据校验,是为保护数据的完整性,用一种指定的算法对原始数据计算出的一个校验值.当接收方用同样的算法再算一次校验值 ...
- java的Arrays工具类
1年多了,jdk还不是很熟,补补. package lhy.core.util; import java.util.Arrays; import java.util.List; public clas ...
- Ubuntukylin-14.04-desktop( 不带分区)安装步骤详解
不多说,直接上干货! Ubuntukylin-14.04-desktop(带分区)安装步骤详解 Ubuntu14.04安装之后的一些配置 Ubuntukylin-14.04-desktop( 不带分区 ...
- PHP在使用正则表达式验证,防注入的时候要注意一下的细节
如下:这是一个防止用户输入的数据中包含SQL的一些关键字的正则表达式 之前一直认为这写的很正确,没多大的问题,而且自己测试也没问题, 因为关键字包含 And,而如果用户输入andy的时候呢,汗,所以还 ...
- SpringMVC异常处理机制
SpringMVC异常处理机制 springMVC会将所有在doDispatch方法中的异常捕获,然后处理.无法处理的异常会抛出给容器处理. 在doDispatch()中调用processDispat ...