2017-03-16 157 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