我的控制器动作:
[HttpPost]
public ActionResult H80Count(IEnumerable<H80SearchCriteria> model)
{
do some stuff and return Json;
}
我的模特:
public class H80SearchCriteria
{
public int ID { get; set; }
public int Operator { get; set; }
public string FieldID { get; set; }
public string Kriterie { get; set; }
}
我的Javascript:
var SearchCriteria = [];
var i = 0;
$('#tableSearchValues > tbody').find('tr').each(function () {
i += 1;
var row = {
ID : i,
Operator : $(this).data('operator'),
FieldID : $(this).data('fieldid'),
Kriterie: $(this).data('kriterie')
};
SearchCriteria.push(row);
});
var url = '/MyController/H80Count';
var data = JSON.stringify(SearchCriteria) ;
$.ajax({
type: 'POST',
url: url,
data: data,
etc...
传递的Json看起来像这样:
[{"ID":1,"Operator":1,"FieldID":1,"Kriterie":11211},{"ID":2,"Operator":1,"FieldID":1,"Kriterie":11211}]
我看不出为什么它没有被正确解析。我错过了什么?
答案 0 :(得分:1)
我想你忘记了ajax函数的contentType: 'application/json'
。
它对我有用。
答案 1 :(得分:0)
尝试使用此代替IEnumerable
使用数组并放置[FromUri]
或[FromBody]
,以查找请求的Uri或Body中的值。
[HttpPost]
public ActionResult H80Count([FromUri] H80SearchCriteria[] model)
{
do some stuff and return Json;
}
并且不要忘记将传统的ajax设置设置为true
$.ajax({
type: 'POST',
url: url,
data: data,
traditional: true
});