【发布时间】:2011-09-27 19:42:08
【问题描述】:
我需要获得一个模态弹出窗口,该弹出窗口显示一个将数据保存回数据库的表单。 有没有这样做的好例子?是 Ajax 更灵活还是使用 jquery 对话框?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-3 jquery
我需要获得一个模态弹出窗口,该弹出窗口显示一个将数据保存回数据库的表单。 有没有这样做的好例子?是 Ajax 更灵活还是使用 jquery 对话框?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-3 jquery
我已经使用JQuery UI Dialog plugin 并使用 JQuery 通过 ajax 加载模态对话框,我对此非常满意。
我不得不修改我的代码来给你一些有用的东西,所以对任何语法错误表示歉意,但我使用这个 jquery,
$('#MyAtag').click(function () {
// Add a container for the modal dialog, or get the existing one
var dialog = ($('#ModalDialog').length > 0) ? $('#ModalDialog') : $('<div id="ModalDialog" style="display:hidden"></div>').appendTo('body');
// load the data via ajax
$.get( 'mycontroller/myaction', {},
function (responseText, textStatus, XMLHttpRequest) {
dialog.html(responseText);
dialog.dialog({
bgiframe: true,
modal: true,
width: 940,
title: 'My Title'
});
}
);
});
它将对 ajax 'get' 的调用绑定到链接的 'click' 事件。 ajax get 请求从我的 MVC 项目中的相应操作返回部分视图,然后显示在模式对话框中。
这是控制器外观的粗略示例
public ActionResult MyAction()
{
// Do Some stuff
//...
// If the request is an ajax one, return the partial view
if (Request.IsAjaxRequest())
return PartialView("PartialViewName");
// Else return the normal view
return View();
}
对话框的视图只是普通的局部视图。
我使用以下 .css,它将模式对话框后面的页面“变灰”
.ui-widget-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #AAA url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
opacity: .8;
filter: Alpha(Opacity=30);
}
您可能需要修改 #ModalDialog 的 css 以使其看起来正确,
【讨论】:
这很简单,但这不是插件: http://deseloper.org/read/2009/10/jquery-simple-modal-window/
基于 Jquery 插件的模态: http://www.ericmmartin.com/projects/simplemodal/
希望这会有所帮助。
【讨论】:
您可以使用 jquery 对话框。 您还可以使用 Jquery 工具。
http://flowplayer.org/tools/demos/overlay/modal-dialog.html
它的占地面积也非常小。
【讨论】: