如何将序列化对象和字符串数组都发送到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。我也尝试like =>
$.ajax({
type: 'POST',
url: '/MyController/MyAction',
data: { frmValues: frmValues, sortorder: sortorder },
success: function (data) {
},
});
它也不起作用。我不知道为什么它不起作用。
最佳答案
使用这种方法,创建一个DTO类,控制器操作将其接受为请求:
$.ajax({
type: 'POST',
url: '/MyController/MyAction',
data: { frmValues: frmValues, sortorder: sortorder },
success: function (data) {
},
});
然后按如下所示的DTO类,确保有效负载中的密钥与属性名称匹配。
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();
}
关于jquery - Controller 的Ajax数据参数始终为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43586217/