如何将序列化对象和字符串数组发送到asp.net控制器? 我的样本ajax在这里=>
var $this = $("#FormName");
var frmValues = $this.serialize();
var sortorder = [];
$(".StepOrder").each(function (index) {
sortorder.splice(index, 0, ($(this).attr('id')));
});
$.ajax({
type: 'POST',
traditional:true,
url: '/MyController/MyAction',
datatype:'html',
contentType: 'application/json; charset=utf-8',
data:JSON.stringify( { frmValues: frmValues, sortorder: sortorder }),
success: function (data) {
},
});
我的控制器=>
[HttpPost]
public ActionResult MyAction(MyModel frmValues,List<string> sortorder)
{
return View();
}
控制器中的MyModel和sortorder始终为null。我也尝试使用=&gt;
$.ajax({
type: 'POST',
url: '/MyController/MyAction',
data: { frmValues: frmValues, sortorder: sortorder },
success: function (data) {
},
});
它也不起作用。我不知道它为什么不起作用。
答案 0 :(得分:3)
使用此方法,创建控制器操作接受的DTO类:
$.ajax({
type: 'POST',
url: '/MyController/MyAction',
data: { frmValues: frmValues, sortorder: sortorder },
success: function (data) {
},
});
然后如下DTO Class,确保有效负载中的密钥与属性名称匹配。
public class ExampleDTO
{
public MyModel frmValues {get; set;}
public List<string> sortorder {get; set;}
}
将其用作:
[HttpPost]
public ActionResult MyAction(ExampleDTO req)
{
//var frmValues = req.frmValues;
//string sortOrder = req.sortorder;
return View();
}