3

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

我发现了该refresh()方法,但这意味着已经初始化了一个剑道窗口。这是第一个问题。我需要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);
4

3 回答 3

3

..可能是我弄错了,并且 refresh() 方法实际上不需要一个完全加载的剑道窗口,其中内容放在首位?我在 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" }
}); "

..不是我期望的刷新但是好的..所以也许我应该删除创建的剑道窗口中的加载内容:

@(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"})
)
于 2016-03-19T11:43:12.363 回答
1

不确定这是否解决了您的主要问题,但您应该能够做到这一点:

@(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"})
)

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

于 2016-03-19T00:40:33.280 回答
1

我第一次看到这个问题:

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

问题显然出在:

接受:应用程序/json、文本/javascript、/;q=0.01

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

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

在提琴手中:

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

并且内容显示在剑道窗口中。希望这是来自帮助。

于 2018-05-21T15:43:23.733 回答