带有ajax的带有2个MVC 4控制器列表的类

时间:2014-08-01 11:51:42

标签: c# jquery ajax asp.net-mvc-4

我试图将带有ajax的两个列的类发送到mvc控制器。

MVC控制器:

[HttpPost]
public JsonResult AfficherDetailsFacture(AfficheDetails afficheDetailsFacture)
{ 
   // do some stuff
}

控制器参数的C#类:

[Serializable]
public class AfficheDetails
{

    public List<long> firstList{ get; set; }

    public List<long> secondList{ get; set; }

    public string numFacture{ get; set; }
}

JS:

var AfficheDetails = {
    firstList: [31025,6954], 
    secondList:  [31542,31211,23214,23211],
    numFacture: "Facture 001"
};    

$.ajax({
    type: "POST",
    async: false,
    url: urls.urlAfficherDetailsFacture,
    contentType: 'application/json',
    data: JSON.stringify(AfficheDetails),
    success: function (oResultat) {
      //
    }

这不能正常工作。

如果firstlist的元素少于secondList,则第一个List在MVC控制器中为空。

我已经工作了几个小时才发现这个“规则”。如果firstList具有更多元素或相同的ammount,那么它正在工作!

它是MVC绑定错误吗?

1 个答案:

答案 0 :(得分:1)

您也可以在Controller上使用

public JsonResult AfficherDetailsFacture(string jsonData)
{ 
 var jss = new JavaScriptSerializer();
 var data = jss.Deserialize<AfficheDetails>(jsonData);
   // do some stuff
}

其中数据现在包含类AfficheDetails

的所有值

和Jquery

编辑 这一行

$.ajax({
    type: "POST",
    async: false,
    url: urls.urlAfficherDetailsFacture,
   // contentType: 'application/json',  comment the type
    data: { jsonData : JSON.stringify(AfficheDetails) },
    success: function (oResultat) {
      //
    }