2017-03-16 155 views
0

这里是我的代码。用JSON发布复杂对象数组,MVC模型不绑定

json_model

var mix = { 
     MixName: $("#mixname").val(), 
     MixDesc: tinyMCE.activeEditor.getContent(), 
     Price: $("#price").val(), 
     DiseaseMixs: [], 
     MixProducts: [] 
    } 

项目添加到DiseaseMixs和MixProducts

$("#DiseaseList").find("tbody tr").each(function (index) { 
     mix.DiseaseMixs.push({ 
      MixID: parseInt(MixID), 
      DiseaseID: parseInt($(".diseaseid").eq(index).html()), 
      ImpactDegree: parseInt($(".derece option:selected").eq(index).html()), 
      Description: $(".diseaseMixDesc input").eq(index).val() 
     }); 
    }) 
    $("#productList").find("tbody tr").each(function (index) { 
     mix.MixProducts.push({ 
      MixID: parseInt(MixID), 
      ProductID: parseInt($(".productid").eq(index).html()), 
      MeasureTypeID: parseInt($(".birim option:selected").eq(index).val()), 
      MeasureAmount: $(".measureAmount input").eq(index).val() 
     }); 
    }) 

这个过程结束,下面是一个示例JSON对象,它是职位。

{ 
"MixName": "asdasddas", 
"MixDesc": "<p>sadasd</p>", 
"Price": "123", 
"DiseaseMixs": [{ 
    "MixID": 1, 
    "DiseaseID": 2, 
    "ImpactDegree": 5, 
    "Description": "asads" 
}, { 
    "MixID": 1, 
    "DiseaseID": 3, 
    "ImpactDegree": 4, 
    "Description": "aqqq" 
}], 
"MixProducts": [{ 
    "MixID": 1, 
    "ProductID": 2, 
    "MeasureTypeID": 3, 
    "MeasureAmount": "3" 
}, { 
    "MixID": 1, 
    "ProductID": 3, 
    "MeasureTypeID": 2, 
    "MeasureAmount": "45" 
}] 
} 

阿贾克斯后

$.ajax({ 
     url: 'SaveMix', 
     type: 'POST', 
     data: JSON.stringify(mix), 
     contentType: 'application/json; charset=utf-8', 
     success: function (result) { 
      console.log(result); 
     }, 
     error: function (xhr, status) { 
      alert(status); 
      console.log(xhr); 
     } 


    }) 

和MVC模式JSONResult功能

型号

public class MixModel 
{ 
    public string MixName { get; set; } 
    public string MixDesc { get; set; } 
    public float Price { get; set; } 
    DiseaseMix[] DiseaseMixs { get; set; } //DiseaseMix EntityFramework entity 
    MixProduct[] MixProducts { get; set; } //MixProduct EF 

} 

功能

[HttpPost] 
    public JsonResult SaveMix(MixModel mix) 
    { 
     bool result = false; 
     //do something 

     return Json(new { result = result }, JsonRequestBehavior.AllowGet); 
    } 

这是我得到的结果。

enter image description here

不管我怎样努力,我不能模型绑定。

我在做什么错?请给我一些帮助。

在此先感谢。

回答

0

模型绑定失败,因为这两个属性当前是private(这是默认情况下,当你没有明确指定任何东西)。

将2个属性更改为public,以便模型联编程序可以设置这些值。

public class MixModel 
{ 
    public string MixName { get; set; } 
    public string MixDesc { get; set; } 
    public float Price { get; set; } 
    public DiseaseMix[] DiseaseMixs { get; set; } //DiseaseMix EntityFramework entity 
    public MixProduct[] MixProducts { get; set; } //MixProduct EF 

} 

我也建议不要与你的ORM生成的实体混合您的视图模型。这创造了一个紧密耦合的解

+1

哈哈我怎么能错过这个。 :) 非常感谢。 – Halim