2017-04-24 68 views
0

如何將串行化對象和字符串數組發送到asp.net控制器? 我的樣本AJAX是這裏=>控制器的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和排序順序在控制器總是null.I也嘗試像=>

$.ajax({ 
type: 'POST', 
url: '/MyController/MyAction', 
data: { frmValues: frmValues, sortorder: sortorder }, 
success: function (data) { 

}, 
}); 

它還不工作,我不知道爲什麼它不起作用。

+0

嘗試'JSON.stringify({frmValues:frmValues,排序順序:排序順序})' – Usman

+0

我已經嘗試像that.It也沒有工作:( – Jze

+0

您可以在問題 – Usman

回答

2

使用這種方法,創建了控制器動作作爲接受請求的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(); 
} 
+0

它沒有區別它參數在方法或模型中。解決OP的問題 –