2017-08-13 79 views
-3

我有這些模型。現在將列表中的asp.net mvc c#列表轉換爲javascript數組

public class ModelA 
{ 
    List<ModelB> ModelB {get;set;} 
} 

public class ModelB 
{ 
    List<ModelC> ModelC {get;set} 
} 

,我想在我的腳本模型轉換上述基地this answer在我看來。

<script> 
     var modelB = '@Html.Raw(Json.Encode(Model.ModelB))'; 
     var modelBData = JSON.parse(modelB); 

     // Here comes the problem... 
     var modelC = '@Html.Raw(Json.Encode(Model.ModelB.ModelC))'; 

</script> 

我可以將模型B轉換爲javascript數組,但未能將ModelC轉換爲javascript數組。現在,我該如何將ModelB中ModelC的列表轉換爲javascript數組?我希望有人能夠發現我出錯的地方。

+0

假設'ModelA'包含三個'ModelB'項目。第一個'ModelB'包含一個'ModelC'。第二個'ModelB'包含兩個'ModelC'。第三個包含三個。您希望在您的''看到多少'ModelC'項目出現問題JSON? – mjwills

+0

實際上我需要它。我認爲你沒有明白我的觀點 – progammer101

+0

你能否用'modelB'和'modelBData'行的生成HTML(瀏覽器中的查看源代碼)更新你的文章? (註釋掉'var modelC'和其他不能編譯的行) – mjwills

回答

0
var modelC = '@Html.Raw(Json.Encode(Model.ModelB.ModelC))'; 

應改爲:

var modelC = '@Html.Raw(Json.Encode(Model.ModelB.SelectMany(z => z.ModelC)))'; 

SelectMany將意味着你連載發生在任何ModelB對象的所有ModelC對象。

+0

謝謝,但如果情況是怎樣。我需要序列化每個ModelB對象的所有ModelC對象 – progammer101

+0

它沒有工作,對於遲到的回覆感到抱歉。我嘗試在ModelC上的每個項目上使用警報,並顯示'未定義' – progammer101

+0

'var ModelC ='@ Html.Raw(Json.Encode(Model.ModelB.SelectMany(m => m.ModelC)))';''var modelC (modelC);' '$ .each(modelC,function(){ alert(ModelC.Description); });' – progammer101