如何根据请求

时间:2015-07-07 14:36:15

标签: jquery asp.net-mvc asp.net-ajax asp.net-mvc-partialview kendo-window

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

    $('.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模型窗口中将其呈现在现有部分视图内。

1 个答案:

答案 0 :(得分:2)

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

  1. 返回PartialViewResult
  2. 的MVC操作
  3. 使用jQuery load方法从第1点
  4. 检索html
  5. 如果Ajax调用
  6. 没有错误,请打开kendo窗口

    你的MVC代码就是这个

    public ActionResult EditWidget(string id)
    {
        var widgetViewModel = // view model construction here.
        return PartialView("Widgets/_EditWidget", widgetViewModel);
    }
    

    您定义了一个包含kendo窗口的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();
                });
    
相关问题