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)
如果您确实需要通过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/网络/窗/概述#加载窗口内容,通过阿贾克斯
| 归档时间: |
|
| 查看次数: |
6514 次 |
| 最近记录: |