我正在打开一个包含局部视图的kendo.window。当我单击“确定”时,我想保存修改后的数据,关闭窗口并重新加载基页。出于某种原因,它不起作用。它将部分视图打开为整页。
我该如何解决这个问题?我应该如何让我的部分视图返回,因为它不能作为页面打开?
谢谢,
这是我到目前为止所拥有的。
基页:
<div id="windowBadgeIMGDiv" class="k-content">
<div id="windowBadgeIMG" style="display:none">
</div>
<script type="text/javascript">
function editDetails(id) {
var windowBadgeIMG = $("#windowBadgeIMG");
windowBadgeIMG.kendoWindow({
modal: true,
width: "950px",
title: "Modify badge picture",
content: {
url: "/Home/BadgePicture",
data: { id: id }
},
deactivate: function () {
}
});
windowBadgeIMG.data("kendoWindow").center();
windowBadgeIMG.closest(".k-window").css({ top: 100 });
windowBadgeIMG.data("kendoWindow").open();
}
</script>
部分观点:
<%using (Html.BeginForm("BadgePicture", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "ImgForm", name = "ImgForm" }))
{ %>
<input type="hidden" name="hdnBadgeId" id="hdnBadgeId" value="<%= Model.Id%>" />
<table>
<!--My editable fields go here-->
<tr>
<td style="padding-top: 20px;" align="center" colspan="4">
<button id="btnSubmit" type="submit"><asp:Label runat="server" Text="<%$ Resources:Global, Update %>" /></button>
</td>
</tr>
</table>
<%} %>
控制器
[HttpPost]
public PartialViewResult BadgePicture(string[] hdnBadgeId, HttpPostedFileWrapper Image1)
{
//Do some work with the data
return PartialView(model);
}
更新:我的解决方案
将modal: true,
替换为iframe: true,
content: "/Home/BadgePicture/" + id,
并使用View而不是PartialView。要在提交时关闭窗口:Close Window from within External Content
答案 0 :(得分:2)
您的意思是在单击“保存”按钮后,结果是数据已发布,然后响应呈现为整页?阅读代码,看起来就是因为表单发布会发生的事情。
浏览器将使用帖子的结果替换视图。您可能想尝试使用iframe来使用kendo窗口,以便将帖子的结果限制为iframe。但是,如果您这样做,那么您的部分应该是完整的HTML页面而不是部分HTML页面,因为它将在自己的iframe中呈现。 http://docs.kendoui.com/api/web/window#configuration-iframe
或者,您必须使用AJAX发布您的窗口数据而不是使用表单帖子,然后替换kendo窗口的内容。
答案 1 :(得分:0)
它可能不是完全相同的问题,但对我而言,这实际上是this issue的一种表现形式 - 剑道窗口AJAX请求实际上被取消了,并且它正在关注一个链接而是URL。很难跟踪,因为在这个实例中也没有调用kendo窗口错误事件,而且我实际上没有设置浏览器导航到的链接。
就我而言,我是从自定义网格工具栏按钮创建窗口的:
@(Html.Kendo().Grid<SomeViewModel>()
.Name("grid")
.ToolBar(t =>
{
t.Custom().Text("Add Item").HtmlAttributes(new { id = "AddItem" });
// would also get the current page as a default URL
})
...
)
然后通过javascript绑定它:
$("#AddItem").click(function (e) {
openNewKendoWindow(); // would open link URL in whole page
});
修复是将e.preventDefault();
添加到点击处理程序,虽然显然return false;
也可以正常工作:
$("#AddItem").click(function (e) {
openNewKendoWindow();
e.preventDefault();
});
这允许Kendo窗口打开,同时忽略href
属性中的任何内容。