telerik treeview asp.net mvc - ссылка не работает для некорневых узлов - PullRequest
1 голос
/ 26 июля 2011

Я использую этот код на мой взгляд:

@(Html.Telerik().TreeView()
.Name("AjaxTreeView")
.BindTo(Model, (item, category) =>
{
    // bind initial data - can be omitted if there is none
    item.Text = category.Name;
    item.Action("Details", "Categories", new { Id = category.Id });
    item.Value = category.Id.ToString();
    item.LoadOnDemand = category.NOChildren > 0;
})
.DataBinding(dataBinding => dataBinding
        .Ajax().Select("_TreeViewAjaxLoading", "Categories")
)
)

Отлично работает (разворачивается и разворачивается). Ссылки действий работают нормально, но только для корневых узлов. Мой текущий контроллер, который выбрасывает JSON для загрузки AJAX:

[Transaction]
[HttpPost]
public ActionResult _TreeViewAjaxLoading(TreeViewItem node)
{
    int? ParentId = !string.IsNullOrEmpty(node.Value) ? (int?)Convert.ToInt32(node.Value) : null;

    var nodes = from item in CategoryRepository.GetChildren(ParentId)
        select new TreeViewItem
        {
            Text = item.Name,
            Value = item.Id.ToString(),
            LoadOnDemand = item.NOChildren > 0
        };
    return new JsonResult { Data = nodes };
}

не устанавливает ссылку действия. Как я могу установить ссылку действия здесь? Спасибо.

Christian

1 Ответ

1 голос
/ 26 июля 2011

Это, кажется, делает трюк:

[Transaction]
[HttpPost]
public ActionResult _TreeViewAjaxLoading(TreeViewItem node)
{
    int? ParentId = !string.IsNullOrEmpty(node.Value) ? (int?)Convert.ToInt32(node.Value) : null;

    UrlHelper u = new UrlHelper(this.ControllerContext.RequestContext);
    var nodes = from item in CategoryRepository.GetChildren(ParentId)
        select new TreeViewItem
        {
            Text = item.Name,
            Value = item.Id.ToString(),
            LoadOnDemand = item.NOChildren > 0,
            Url =  u.Action("Details", "Categories", new { Id = item.Id} )
        };
    return new JsonResult { Data = nodes };
}
...