Asp.Net Mvc中Action的参数可以手动接收并反序列化form表单的值,
通过表格提交
name=value类型,只要Action参数的变量名与输入的名称相同即可
html代码:
复制
C# 代码
public JsonResult Test(string name)
{
return Json(name);
}
复制
对于Model类型,只要Action参数Model的数组名与输入的名称相同即可,html如下:
复制
C#代码需要做相应的修改:
public class Person
{
public string name;
public string sex;
}
public JsonResult Test(Person person)
{
//相关代码
}
复制
使用ajax提交
构造对象,对象数组与Action参数变量名相同或者与接收参数定义Model类型相同。
HTML和C#代码如上,js代码修改
var person ={
name = 获取表单的name值;
sex = 获取表单的sex值;
复制
以上描述针对单值提交和单模型提交。 它比较容易理解和使用。 对于List类型提交html,很多时候你都不知道哪里出了问题。 当然,这是一个笨办法,可以用js代码写一个循环,逐个提交。
如果数据量较小,这种方法是可以接受的。 如果插入大量数据,这种方式对前后台的性能影响很大。 下面介绍一下批量提交:
List类型的html代码如下:
复制
C#代码如下
public JsonResult Test(List name)
{
//自己代码
}
复制
对于列表类型,解决方法如下: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,
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 personList)
{
//自己代码
}
复制
当然还有另外一种办法,就做个变通的办法提交html,将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 list = JsonConvert.DeserializeObject<List>(personList);
//其他逻辑
}
复制
发表评论