0

Ich habe ein Problem mit Telerik TreeView Control für Asp.Net MVC. Die TreeView-Elemente zeigen den Text als "nicht definiert" an.

Bitte beachten Sie das Bild unten.Asp.Net MVC Core Telerik TreeView Der Text wird als undefiniert angezeigt

TreeView Error
Ansicht

<div class="col-md-5"> 
     @(Html.Kendo().TreeView() 
     .Name("treeviewOrgHierarchy") 
     .DataTextField("Name") 
     .DataSource(dataSource => dataSource 
      .Read(read => read 
       .Action("Hierarchies", "OrgHierarchy") 
      ) 
     ).Deferred() 
     ) 
    </div> 


-Controller

public JsonResult Hierarchies(int? id) 
     { 
      IEnumerable<TreeViewItemViewModel> items = null; 
      if(id.HasValue) 
      { 
       items = hierarchyService.GetChildHierarchies(id.Value).Select(x => new TreeViewItemViewModel { HasChildren = x.HasChildren, Id = x.Id, Name = x.Name }); 
      } 
      else 
      { 
       var rootItem = hierarchyService.GetRootHierarchy(); 
       items = new List<TreeViewItemViewModel> { new TreeViewItemViewModel { Id = rootItem.Id, Name = rootItem.Name, HasChildren = rootItem.HasChildren } }; 
      } 

      return Json(items); 
     } 

ich schon die unten versucht, aber gleiches Ergebnis.

.DataTextField("item.Name") 

Jede Hilfe wäre sehr spürbar.

Antwort

0

Versuchen

return Json(items, JsonRequestBehavior.AllowGet); 
+0

Willkommen bei [so]! Warum und wie funktioniert das? Ohne eine bessere Erklärung ist dies wenig mehr als ein Kommentar – jpaugh

0

Schließlich fand ich das Problem, hier der Täter das unten Stück Code war.

.DataTextField("Name") 

Der Json vom Server zurückgegeben wird, wie unten

[{"id":1,"name":"Root Item","hasChildren":true}] 

Die Frage ist hier der Feldname, Serializer die Json war eigentlich das Feld umgewandelt wird Namen camelcase, „Name“ auf „name“ . Und als Ergebnis gab es kein Feld mit dem Namen "Name", da JavaScript die Groß- und Kleinschreibung berücksichtigt. So habe ich geändert Code

.DataTextField("name") 

und die für mich gearbeitet.

Verwandte Themen