0

こんにちは、Kendo UI Treeview を ASP.NET MVC 4 コントローラーにバインドしようとしています。リモートデータを使用して、 TreeViewsの Kendo UI デモの情報をたどってみました。返された JSON が正しいと私が知る限り、データ配列のカプセル化オブジェクトに問題がある可能性はありますか?

コードを表示

<div class="treeview-back" style="padding: 10px">
<h3>Groups</h3>
@(Html.Kendo().TreeView()
    .Name("treeviewGroup")
    .DataTextField("Name")
    .DataSource(dataSource => dataSource
        .Read(read => read
            .Action("GroupsRead", "Group")
        )
    )
)
</div>

コントローラ

public class GroupController : Controller
{
    private IUserService _userService;

    public GroupController(IUserService userService)
    {
        _userService = userService;
    }
    //
    // GET: /GroupManage/

    public ActionResult ManageGroup()
    {
        return View();
    }

    public ActionResult GroupsRead([DataSourceRequest]DataSourceRequest request)
    {
        var groups = _userService.GetAllGroups();

        List<GroupTreeViewModel> treeViewGroups = new List<GroupTreeViewModel>();
        foreach (var group in groups)
        {
            treeViewGroups.Add(new GroupTreeViewModel()
                {
                    id = group.Id,
                    Description = group.Description,
                    Name = "Test Node",
                    text = "Body of test node",
                    hasChildren = false,
                    ParentId = null 

                }
            );
        }
        return Json(treeViewGroups.ToDataSourceResult(request),JsonRequestBehavior.AllowGet);
    }
}

**返された Json

{"Data":[{"Name":"Test Node","Description":"Full","text":"Body of test node","id":1,"hasChildren":false,"ParentId":null},{"Name":"Test Node","Description":"Platform 1","text":"Body of test node","id":2,"hasChildren":false,"ParentId":null}],"Total":2,"AggregateResults":null,"Errors":null}

アップデート

問題を解決しました。返された json データは、ツリービューが期待していたものとは異なるレイアウトでした。ツリービューはノードの配列を期待していましたが、代わりにその配列を別のオブジェクトにラップして送信していました。

.ToDataSourceRequest() への呼び出しを削除することでこれを修正しました

return Json(treeViewGroups,JsonRequestBehavior.AllowGet);
4

2 に答える 2

0

JSON メソッド (GroupsRead()) からビューを作成しました。代わりに、JSON メソッド以外のビュー フォームを作成する必要があります。例えば:

    **//Create a view from ManageGroup() and call the Json** 
// Below Razor code created in ManaeGroup()
<div class="treeview-back" style="padding: 10px">
<h3>Groups</h3>
@(Html.Kendo().TreeView()
    .Name("treeviewGroup")
    .DataTextField("Name")
    .DataSource(dataSource => dataSource
        .Read(read => read
            .Action("GroupsRead", "Group")
        )
    )
)
</div>
于 2014-09-09T08:26:54.523 に答える