我的应用程序中有这个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"))
我正在尝试将数据传递给由JavaScript函数返回的LoadContentFrom()中的acrion,但我不知道该怎么做。我可以传递这样的数据:
.LoadContentFrom("CopyStructure", "NewXmlLayout", new { type= "INPUT" })
但不是我想要的。
JS功能:
function getInfo() {
return { type: "INPUT" };
};
我的控制器:
public ActionResult CopyStructure(string type)
{
return PartialView();
}
答案 0 :(得分:9)
如果您确实需要通过JavaScript getInfo()
函数访问您的数据,那么执行此操作的方法是定义您正在执行的窗口,但在打开窗口之前不要设置内容。打开窗口时,使用jQuery.ajax()
调用CopyResult
,将getInfo()
的结果传递给data参数。
在你的剃刀中,取出LoadContentFrom
为Open
事件添加事件处理程序:
@(Html.Kendo().Window()
.Name("copyStructure")
// Omitted for brevity
...
.Events(e => e.Open("copyStructure_Open"))
)
在JavaScript中的处理程序中,调用$.ajax
并在success
回调中,调用Window对象上的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