【问题标题】:Asp.Net MVC Core Telerik TreeView Text shows as undefinedAsp.Net MVC Core Telerik TreeView 文本显示为未定义
【发布时间】:2016-07-23 10:25:40
【问题描述】:

我在使用 Telerik TreeView Control for Asp.Net MVC 时遇到问题。树视图项目将文本显示为“未定义”。

请看下图。


查看

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


控制器

  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);
        }

我已经尝试过以下方法,但结果相同。

.DataTextField("item.Name")

任何帮助都将不胜感激。

【问题讨论】:

    标签: asp.net-mvc telerik treeview asp.net-core-mvc kendo-treeview


    【解决方案1】:

    试试

    return Json(items, JsonRequestBehavior.AllowGet);
    

    【讨论】:

    • 欢迎来到Stack Overflow!为什么,这是如何工作的?如果没有更好的解释,这只不过是一条评论
    【解决方案2】:

    终于找到了问题所在,罪魁祸首就是下面这段代码。

    .DataTextField("Name")
    

    服务器返回的Json如下

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

    这里的问题是字段名称,Json 序列化程序实际上是将字段名称转换为 camelCase,将“名称”转换为“名称”。结果没有名称为“名称”的字段,因为 JavaScript 区分大小写。 所以我将代码更改为

     .DataTextField("name")
    

    这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      相关资源
      最近更新 更多