MVC kendo窗口 - 从javascript函数获取数据

Yat*_*iac 2 asp.net-mvc telerik kendo-ui

我的应用程序中有这个kendo窗口

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"))
Run Code Online (Sandbox Code Playgroud)

我试图将数据传递给LoadContentFrom()中的acrion,它由javascript函数返回,但我不知道该怎么做.我可以传递这样的数据:

.LoadContentFrom("CopyStructure", "NewXmlLayout", new { type= "INPUT" })
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.

JS功能:

function getInfo() {
        return { type: "INPUT" };
    };
Run Code Online (Sandbox Code Playgroud)

我的控制器:

 public ActionResult CopyStructure(string type)
    {
        return PartialView();
    }
Run Code Online (Sandbox Code Playgroud)

And*_*ers 9

如果您确实需要通过JavaScript getInfo()函数访问数据,那么执行此操作的方法是按照您的操作定义Window,但在打开窗口之前不要设置内容.打开Window时,jQuery.ajax()用来调用CopyResult,将结果传递getInfo()给data参数.

在你的Razor中,取出LoadContentFrom为事件添加一个事件处理程序Open:

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

在JavaScript的处理程序中,调用$.ajax并在success回调中,调用contentWindow对象上的方法,并将返回data的参数作为参数传递:

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

请注意只发送窗口内容所需的内容,而不是整页(DOCTYPE,html,head,body) - 请参阅Telerik的此文档:http://docs.telerik.com/kendo-ui/getting-started/网络/窗/概述#加载窗口内容,通过阿贾克斯