延迟加载Telerik窗口内容

时间:2012-12-11 15:35:01

标签: c# asp.net-mvc-3 telerik telerik-mvc

我在ASP.NET MVC 3中工作并使用Telerik。我有一个空的telerik窗口。我的目标是只在用户点击按钮时向服务器询问内容,但我不知道如何做到这一点。我想,要实现这一点,我需要存储对telerik窗口的引用。但是我该怎么做?请帮助。这是我有多远:

@{
   Html.Telerik().Window()
   .Name("ImportDialog")
   .ClientEvents(events => events.OnOpen("DialogOpen"))
   .Visible(false)
   .Title("Import users")
   .Draggable(false)
   .Resizable(resizing => resizing.Enabled(false))
   .Modal(true)
   .Width(400)
   .Height(400)
   .Render();
}

我确实想在DialogOpen函数中做一些事情,或者用服务器端函数替换客户端函数....

2 个答案:

答案 0 :(得分:1)

您应该使用Telerik窗口的客户端API,更具体地说是ajaxRequest方法。

因此,例如,当单击按钮时,您应该获取客户端对象并调用ajaxRequest方法,该方法将使Window从该MVC操作方法中检索其内容。 e.g。

function DialogOpen(){
    var myWin= $('#ImportDialog').data('tWindow');
    myWin.ajaxRequest("Controller/Action", { name: "John",location:"Boston"});
}

答案 1 :(得分:0)

我找到了一种答案,但我不确定它是否是最好的。

在javascript函数DialogOpen中我向网址发送ajax请求(也称为MVC中的控制器动作),我将结果放在对话框窗口的内容中,如下所示:

function DialogOpen () 
{
 $.ajax({
    type: "POST",
    url: "Controller/Action",
    data: "name=John&location=Boston",
    success: function (htmlContent) 
    {
        $('#ImportDialogContent').html(htmlContent);
    },
    error: function () 
    {
        $('#ImportDialogContent').html("<p>Could not import user data at this time</p>");
    }
 });
}

P.S。:我给telerik Window(ImportDialogContent)的内容区域提供了一个ID!