由于我是MVC5的新手,我可能会错误地考虑这个问题。
我有一个CustomerInfo.cshtml视图,其中列出了CustomerContacts。它们旁边是一个“+”图标,它将打开一个对话框窗口并允许它们添加一个新的CustomerContact。
在打开对话框时,我调用CustomerContactController创建GET方法(将customerId设置为我的模型并将其传递给视图)。
在保存时我调用CustomerContactController创建POST方法设置值并保存到db。
此时,如何关闭对话框窗口并刷新父CustomerInfo.cshtml页面,以便新联系人显示在列表中。所有的Action方法都要求我返回一些东西。
我正在从CustomerInfo.cshtml视图中打开我的对话框,如下所示:
@(Html.Kendo().Window()
.Name("windowContact")
.Title("New Customer Contact")
.LoadContentFrom("Create", "CustomerContact", new { customerId = Model.Id })
.Draggable()
.Width(680)
.Visible(false)
.Events(events => events.Open("centerWindow"))
)
在对话窗口中,我有一个剃刀形式。这是对话框的底部:
<input type="submit" value="Save" id="btnSave" class="btn btn-primary" />
<input type="button" value="Cancel" id="btnCancel" class="btn btn-default" />
}
<script>
$("#btnCancel").click(function () {
$("#windowContact").data("kendoWindow").close();
});
</script>
这是我目前正在做的事情,它带我回到CustomerInfo视图,但刷新了。是使用AJAX顺利完成的唯一方法吗?
return RedirectToAction("CustomerInfo", "Customer", new { id = custContact.CustomerId });
答案 0 :(得分:1)
通过jQuery Ajax发布Create视图的表单数据。像:
$.ajax({
url: '/Create/CustomerContact',
type: 'post',
contentType: "application/x-www-form-urlencoded",
data: $form.serialize(),
success: function (data, status) {
// here close the window and refresh parent
// if your new window is opened in iframe
window.parent.location.reload();
$("#windowContact").data("kendoWindow").close();
// if your new window is opened by window.open() method.
window.opener.location.reload();
self.close();
},
error: function (xhr, desc, err) {
alert("Desc: " + desc + "\nErr:" + err);
}
});
希望它对你有用,谢谢。