我陷入了一个看似非常简单的场景:
加载一个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);
答案 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窗口中。希望这是来自帮助。