0

私はtelerikMVCTreeViewを使用しようとしています。ツリービューには3つのレベルがあります。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)第3レベルのアイテム(apiMethodIDなど)をクリックするだけで、探しているコントローラーアクションを呼び出す関数を実行し、それをmyDivに投稿するjQuery関数を記述します。次のようなものを試してみてください。

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

$ .get hereは、実際にコントローラーメソッドを呼び出します。その事実をデバッグして、それが機能することを確認できるはずです。

3)PartialViewを返すコントローラーアクションを確認してください。そうでない場合は、そのdiv内のページ全体を再レンダリングします。

それがうまくいくかどうか教えてください。

于 2013-01-02T22:46:01.747 に答える