0

我正在尝试使用 Telerik MVC TreeView。我在树视图中有三个级别。单击第 3 级树视图项时,我需要加载视图而不刷新页面。我尝试使用 item.Url。但是整个页面刷新并且树视图消失了。我在“菜单”部分视图中有一个树视图,它由 _layout.cshtml 调用

     @(Html.Telerik().TreeView()
    .Name("TreeView")
    .ShowLines(false)

    .BindTo(Model, mappings =>
    {
        mappings.For<AdminTool.Web.Models.ProjectModel>(binding => binding
                .ItemDataBound((item, project) =>
                {
                    item.Text = project.Name;
                })
                .Children(project => project.ApiModels));

                mappings.For<AdminTool.Web.Models.ApiModel>(binding => binding
                .ItemDataBound((item, api) =>
                {
                    item.Text = api.Name;
                    item.Value = api.Id;
                })
                .Children(api => api.ApiMethods));

                mappings.For<AdminTool.Web.Models.ApiMethodModel>(binding => binding
                .ItemDataBound((item, apimethod) =>
                {
                    item.Text = apimethod.Name;
                  item.Url = Url.Action("ApiMethodById", "ApiMethod", new { id= apimethod.Id });

                }));


    })
  ) 

提前致谢!

4

1 回答 1

0

我建议为此使用 jQuery。您将执行以下操作:

1) 将您希望加载的任何位置放置在带有一些 id 的标签内(例如“myDiv”)

2) 编写一个 jQuery 函数,单击您的第三级项目(例如 apiMethodID)来运行一个函数,该函数将调用您正在寻找的控制器操作,并将其发布到 myDiv。您可能想尝试以下方法:

$(document).ready(function()){
  $('#apiMethodID').click(function(){
      var value = $('#apiMethodID').val();
      var url = "/ApiMethod/ApiMethodById";
      $.get(url, { apiMethodId: value }, function(data){
         $('#myDiv').html(data);
      });
   })
}

$.get 这里实际上会调用你的控制器方法。您应该能够调试该事实以确保它有效。

3) 确保您要返回的控制器操作返回 PartialView,否则您将在该 div 内重新渲染整个页面。

让我知道这是否有效。

于 2013-01-02T22:46:01.747 回答