如何根据要求在 Kendo Window 中加载部分视图

Posted

技术标签:

【中文标题】如何根据要求在 Kendo Window 中加载部分视图【英文标题】:How to load a partial view inside Kendo Window on request 【发布时间】:2015-09-25 02:59:36 【问题描述】:

我有一个剑道窗口,它的数据是通过 ajax 调用加载的。这个剑道窗口就像一个小部件编辑器,允许用户更改或操作数据以呈现不同的图表等。一旦用户配置了所有选项,他们想要在显示在页面上之前预览他们的图表/图形。 我已经成功构建了模型窗口并使用一个输入(预览)按钮加载了初始数据,但现在我不知道如何在预览按钮单击时加载模型窗口内的局部视图。我不知道这种方法是否正确,但我绝对需要一个局部视图,因为我必须构建模型,该模型将传递给这个局部视图以呈现图表/图形。

    $('.btnedit').click(function () 
        var pwrid = $(this)[0].id;

        $.ajax(
            url: '/Home/EditWidget/' + '?id=' + pwrid,
            type: 'GET',
            accepts: 'text/html',
            context: self,
            success: self.editWidgetWindowCallBack,
            error: function ()  alert('Oops! Something went wrong'); ,
            complete: function() 
        );
    );

editWidgetWindowCallBack: function (html, textStatus, jqXHR) 
    var model = $('#EditWidgetModelWindow').data('kendoWindow');
    model.content(html);
    model.center();
    model.open();

EditWidgetModelWindow 是我的剑道模型窗口

以下是我的操作方法

public ActionResult EditWidget(string id)

    var widgetViewModel = // view model construction here.
    return PartialView("Widgets/_EditWidget", widgetViewModel);

这就是我的剑道模型窗口在其中加载编辑器局部视图的方式,现在我想通过单击按钮在该局部视图中加载另一个局部视图。 例如如果我的局部视图名称是 _Chart 并且模型名称是 ChartModel,我如何通过单击按钮(按需)从父局部视图调用此局部视图,并在 Kendo 模型窗口中将其呈现在现有局部视图中。

【问题讨论】:

您好,您能否将一些代码发布到您目前拥有的代码中。 嗨 Jamie,我已经用代码更新了我的问题 【参考方案1】:

我使用这种方法将 html 加载到剑道窗口中:

    返回 PartialViewResult 的 MVC 操作 使用 jQuery load 方法从第 1 点检索 html 如果 Ajax 调用没有错误,则打开剑道窗口

你的 MVC 代码是这样的

public ActionResult EditWidget(string id)

    var widgetViewModel = // view model construction here.
    return PartialView("Widgets/_EditWidget", widgetViewModel);

您定义一个包含剑道窗口的 html 标记:

@(Html.Kendo().Window()
    .Name("wndWindow")  
    .Content(@<text>
         <div id="wndContent">

    </div>
   </text>)

) )

在您的脚本中使用 jQuery 来检索 html:

$('.btnedit').click(function () 
   var pwrid = $(this)[0].id;

   $('#wndContent').load('/Home/EditWidget/', id: prwid, function (response, status, xhr) 
            if (status == "error")
                try
                    var msge = $.parseJSON(response);
                    // get the server error
                 catch(e)
                    alert("Error parsing server response");
                
            else
                $("#wndWindow").data("kendoWindow").open().center();
            );

【讨论】:

感谢您的回复 anmarti。我不久前已经解决了这个问题,但没有更新我的答案。我相信您的回复肯定会对某人有所帮助。

以上是关于如何根据要求在 Kendo Window 中加载部分视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Three.js 中加载 .obj 3D 模型?

如何根据 kendo ui mvc 网格中的条件格式化行

Kendo ComboBox - 如何根据其文本()而不是值()选择选项?

从javascript函数获取Kendo Window LoadContentFrom参数内容

如何根据 Kendo-Angular2-grid 中的数据自动调整网格列的大小?

ExtJs如何在Window窗口中加载页面上的GridPanel??