2017-08-13 125 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