Kendo窗口刷新不起作用

时间:2016-03-18 11:59:20

标签: asp.net-mvc kendo-ui kendo-asp.net-mvc kendo-window

我陷入了一个看似非常简单的场景: 加载一个Kendo窗口,其中部分视图绑定到模型,动态参数modelId将由客户端js提供。

我发现了refresh()方法,但这意味着已经有一个初始化的kendo窗口。这是第一个问题。我需要modelId来显示内容。 所以我解决了这个问题并简单地返回了一个新模型,而不是应该由refresh()方法替换/刷新+有效参数modelId并最终显示。 问题:视图无法更新。 但refresh()方法确实有效。 控制器接收参数modelId,获取相应的模型并返回视图。但是Kendo窗口仍然保留了空视图模型。

我努力让这个工作起来但没有成功..

@(Html.Kendo().Window()
      .Name("window")
      .Title("")
    //loads an empty viewmodel intially as there is no possibility to pass parameter
      .LoadContentFrom("Actionname", "Controller")          
      .Actions(actions => actions.Close())
      .Modal(true).Visible(false)
      .HtmlAttributes(new {style = "margin: 10px"})
      )

Javascript片段:

$("#window").data("kendoWindow").refresh({
    url: '/controller/actionname/',
    data: { parameterlabel: parameter}
});
$("#window").data("kendoWindow").open().center(true);

3 个答案:

答案 0 :(得分:2)

..可能是因为我弄错了,而且刷新()方法实际上并不需要一个装满内容的完全加载的剑道窗口?我在teleriks页面上找到了这个:" 如果要动态地(通过AJAX)在窗口中加载内容,可以通过以下方式加载:

//set up kendo window
$(document).ready(function () {
     var window = $("#window").kendoWindow({
         height: "200px",
         modal: true,
         title: "Centered Window",
         visible: false,
         width: "200px"

     }).data("kendoWindow");
 });
//using the refresh method after the window has been intialized:
var dialog = $("#window").data("kendoWindow");
dialog.refresh({
    url: "/search",
    data: { query: "foobar" }
}); "

..并不是我所期待的刷新,但没关系...... 所以也许我应该删除创建的kendo窗口中的加载内容:

@(Html.Kendo().Window()
.Name("window")
.Title("")
//.LoadContentFrom("Actionname", "Controller", new { modelID = modelId })          
.Actions(actions => actions.Close())
.Modal(true).Visible(false)
.HtmlAttributes(new {style = "margin: 10px"})
)

答案 1 :(得分:0)

不确定这是否解决了您的主要问题,但您应该可以这样做:

@(Html.Kendo().Window()
    .Name("window")
    .Title("")
    .LoadContentFrom("Actionname", "Controller", new { modelID = modelId })          
    .Actions(actions => actions.Close())
    .Modal(true).Visible(false)
    .HtmlAttributes(new {style = "margin: 10px"})
)

然后您不需要加载空模型并使用正确的参数刷新它。

答案 2 :(得分:0)

我第一次看到这个问题:

wnd.refresh({
    url: msg.Url,
    type: "POST",
    contentType: "application/json", 
    dataType: "json",
    data: msg.Data
});

并且剑道窗口是空的。 Fiddler中的请求(删除了一些标题和数据):

POST http://localhost/My/PtsSchedule/Pts_AddBooking HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json

问题显然在于:

  

接受:application / json,text / javascript, / ; Q = 0.01

并删除dataType:为我解决了这个问题。这里是新的刷新:

wnd.refresh({
    url: msg.Url,
    type: "POST",
    contentType: "application/json", 
    data: msg.Data
});

和Fiddler:

POST http://localhost/My/PtsSchedule/Pts_AddBooking HTTP/1.1
Accept: text/html, */*; q=0.01
Content-Type: application/json

,内容显示在Kendo窗口中。希望这是来自帮助。