2014-06-18 82 views
2

我有這樣的劍道窗口獲取數據MVC劍道窗口 - 在我的應用程序的JavaScript功能

Html.Kendo().Window() 
    .Name("copyStructure") 
    .Title("Copy Structure") 
    .Content("Loading...") 
    .LoadContentFrom("CopyStructure", "NewXmlLayout") // <-- here* 
    .Draggable(false) 
    .Visible(false) 
    .Modal(true) 
    .Actions(s => s.Custom("")) 
    .Events(e => e.Open("openWindow").Close("closeWindow")) 

,我試圖將數據傳遞到acrion在LoadContentFrom()至極由JavaScript函數返回,但我不知道該怎麼做。我可以通過這樣的數據:

.LoadContentFrom("CopyStructure", "NewXmlLayout", new { type= "INPUT" }) 

但是,我不是在尋找。

的JS功能:

function getInfo() { 
     return { type: "INPUT" }; 
    }; 

我的控制器:

public ActionResult CopyStructure(string type) 
    { 
     return PartialView(); 
    } 
+0

當用'getInfo()'替換''NewXmlLayout''時會發生什麼? 「不是我在找什麼」是什麼意思? – DanM7

+0

「NewXmlLayout」是我的控制器,'CopyStructure'是我的Action。 – Yatiac

回答

9

如果你真的需要通過JavaScript的getInfo()功能來訪問您的數據,那麼要做到這一點的方法是定義窗口因爲你正在做的事情,但不要設置內容,直到你打開窗口。打開窗口時,使用jQuery.ajax()調用CopyResult,將getInfo()的結果傳入數據參數。

在你的剃鬚刀,取出LoadContentFrom添加事件處理程序Open事件:

@(Html.Kendo().Window() 
    .Name("copyStructure") 
    // Omitted for brevity 
    ... 
    .Events(e => e.Open("copyStructure_Open")) 
) 

,並在JavaScript的處理程序,調用$.ajax並在success回調,調用窗口對象的content方法通過返回的data作爲參數:

function copyStructure_Open(e) { 
    $.ajax({ 
     url: '@Url.Action("CopyStructure", "NewXmlLayout")', 
     type: 'POST', 
     data: getInfo(), 
     success: function(data) { 
      e.sender.content(data); 
     } 
    }); 
} 

當心只發送什麼需要的窗口內容,而不是一個完整的頁面(DOCTYPE,html,head,body) - 請參閱Telerik的文檔:http://docs.telerik.com/kendo-ui/getting-started/web/window/overview#loading-window-content-via-ajax

+0

謝謝你,我拉着我的頭髮與MVC部分視圖loadcontentfrom而我忘了將佈局設置爲空 – uowzd01