c# - mvc view-unable to access nested list -


i have list of categories , each category may have subcategories. getting list correct records in controller if try use list of subcategories in view, shows nothing.

classes:

 public class dashboardtile {     public int id { get; set; }     public int? categoryid { get; set; }     public string name { get; set; }     public string description { get; set; } } public class dashboardtilebo : dashboardtile {     public bool ischecked { get; set; }     public list<dashboardtilebo> dashboardtiles { get; set; } }  public class addtilevm {     public list<dashboardtilebo> dashboardtiles { get; set; } } 

controller:

 public actionresult addtiles()     {         var alldashboardtiles = bll.publiclayer.getalldashboardtiles(sessionitems.userid);         var addtilevm = new addtilevm()         {             dashboardtiles = alldashboardtiles,         };         return partialview(addtilevm );     } 

view:

 @model hugo.businessobjects.addtilevm  <link href="~/content/js/nestable/nestable.css" rel="stylesheet"/>  <script src="~/content/js/nestable/jquery.nestable.js"></script>  <div class="modal-dialog"> <div class="modal-content">     <div class="modal-header">         <button type="button" class="close" data-dismiss="modal">&times;</button>         <h4 class="modal-title">add/remove tiles desktop</h4>     </div>      @using (ajax.beginform("addtiles", "default",new ajaxoptions {onsuccess = "onsuccess" }))     {         @html.antiforgerytoken();         <div class="modal-body">             <div class="row">                 <div class="col-lg-12">                     @for (var = 0; < model.dashboardtiles.count; i++)                     {                         <div class="col-lg-5">                             <label class="">                                 @html.checkboxfor(a=> model.dashboardtiles[i].ischecked)                                 @model.dashboardtiles[i].description                             </label>                         </div>                         @*if (@model.dashboardtiles[i].dashboartiles.count > 0)                         {                             (var j = 0; j < @model.dashboardtiles[i].dashboartiles.count; j++)                              {                                 <div class="col-lg-5">                                     <label class="">                                         @html.checkboxfor(a => @model.dashboardtiles[i].dashboartiles[j].ischecked)                                         @model.dashboardtiles[i].dashboartiles[j].description                                     </label>                                 </div>                             }                         }*@                         @html.hiddenfor(a=> model.dashboardtiles[i].id)                        }                 </div>             </div>          </div>          <div class="modal-footer">             <button type="button" class="btn btn-rounded btn-sm btn-tiles" data-dismiss="modal">cancel</button>             <button type="submit" class="btn btn-rounded btn-sm btn-tiles" >update</button>         </div>     } </div><!-- /.modal-content --> } 

method fetch list

   public static list<businessobjects.dashboardtilebo> getalldashboardtiles(long userid)     {         using (var context = new hugointernalentities())         { var distinccategoryids = context.dashboardtiles.select(a => a.categoryid).distinct().tolist();             var alltiles = (context.dashboardtiles.where(a => distinccategoryids.contains(a.id)).select(x=>                             new businessobjects.dashboardtilebo                             {                                 id = x.id,                                 name = x.name,                                 description = x.description,                             })).tolist();             var list = context.dashboardusertiles.where(a => a.userid == userid).select(a => a.dashboardtileid).tolist();              alltiles.foreach(a => a.ischecked = list.contains(a.id));             alltiles.foreach(a=>a.dashboardtiles=context.dashboardtiles.where(b=>a.id==b.categoryid && b.id != a.id).select(x=>             new businessobjects.dashboardtilebo             {                 id = x.id,                 name = x.name,                 description = x.description,             }).tolist());             alltiles.foreach(a => a.dashboardtiles.foreach(b => b.ischecked = list.contains(b.id)));             return alltiles;         }     } 

in above view list of main categories shown if uncomment code subcategories nothing shown. please see screenshot of list getting in addtilevm

list of tiles:

enter image description here


Comments