2013-01-02 41 views
0

我正在嘗試使用telerik MVC TreeView。我在樹視圖中有三個級別。點擊第三層樹視圖項,我需要加載一個視圖,而不刷新頁面。 我試圖使用item.Url。但整個頁面刷新和樹視圖消失。 我在「菜單」局部視圖樹形視圖,它是由_layout.cshtml來自telerik mvc的Ajax treeviewitem

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

       })); 


    }) 
) 

提前感謝叫!

+0

Wats downvoting的原因是什麼? – user1399653

回答

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

$這裏不用彷徨實際上將打電話給你的控制器的方法。你應該能夠調試這個事實,以確保它能正常工作。

3)確保您要返回PartialView的控制器操作,否則您將重新渲染該div內的整個頁面。

讓我知道這是否有效。

+0

謝謝。這有幫助。我將「onSelect」事件添加到樹視圖'.ClientEvents(events => events .OnSelect(「onSelect」))'並將js函數更改爲onSelect(e)var id = $('#TreeView') 。數據( 'tTreeView')getItemValue(e.item)。 var url =「/ ApiMethod/GetApiMethodById」; ($ {'centerbody')。html(data); }); $ .get(url,{apiMethodId:id},function(data){ } – user1399653

+0

然後,不要忘記標記爲答案。 – IronMan84