如果要在模型弹出窗口中打开EditPartial Action方法的结果,则需要一些模型弹出窗口代码。
jQuery UI是一个选项。 http://jqueryui.com/demos/dialog/
1)包括在你的页面的jQuery UI参考,
2)添加下面的脚本到您的网页,将您的正常链接转换成模型弹出
<script type="text/javascript">
$(function(){
$(".actionLink").click(function (e) {
var url = this.href;
var dialog = $("#dialog");
if ($("#dialog").length == 0) {
dialog = $('<div id="dialog" style="display:hidden"></div>').appendTo('body');
}
dialog.load(
url,
{}, // omit this param object to issue a GET request instead a POST request, otherwise you may provide post parameters within the object
function (responseText, textStatus, XMLHttpRequest) {
dialog.dialog({
close: function (event, ui) {
dialog.remove();
},
modal: true,
width: 460, resizable: false
});
}
);
return false;
});
});
</script>
从你的动作结果,你可以返回你想要在模型弹出窗口中显示的任何标记。大多数情况下,您将返回一个视图。如果你想显示一个局部视图,如果它是一个ajax请求,并显示普通视图,如果它是一个普通的请求,你可以检查Request.IsAjaxRequest方法来做到这一点。
public ActionResult EditPartial(int id)
{
CustomerViewModel objCustomer=GetCustomer(id);
if(Request.IsAjaxRequest())
{
return View("Partial/Edit",objCustomer);
}
return View(objCustomer);
}
假设你有目前显示正常的网页和部分网页(型号弹出)
我喜欢的名字我的操作方法为Edit
代替EditPartial
2次,因为它同时处理请求(阿贾克斯和正常)
你真是太棒了先生。 – OBL 2012-04-10 18:05:21
因此,在实现逻辑之后,我将它带到部分页面,用户可以在其中编辑细节。点击保存按钮,我做了一个Ajax调用,并在成功返回data = true时将更改保存到数据库。如果成功,我怎么能从EditPartial页面关闭这个对话框? 谢谢! – OBL 2012-04-10 21:34:17