2

背景:

我在 ASP.NET 2.0 上的 jquery 1.3.2 上使用 jquery blockui 2.31。

我正在使用该对话框将(通常)隐藏的 DIV 显示为一种弹出模式对话框,其中包含 ASP.NET 服务器端控件(为简单起见,使用 asp:Button)。没有 AJAX,或者不保证有。

jquery blockui 所做的其中一件事是,如果您将一些 html 元素传递给它 - 它会将控件从页面中的位置移除,并将其附加到body

ASP.NET 2.0 似乎希望回发的控件采用 $(#aspnetForm) 可以找到的形式。jquery blockui 只是将它们移到正文中,因此回发永远不会触发

该方法是一个实例方法,可能无法像静态方法一样工作(引用登录用户和页面控件...)

我做了一些挖掘:

我修改了 jquery blockui 以附加到表单(并与选择器搏斗以删除块),但它使 IE6 和 IE7 失效——覆盖从表单开始,整个对话框出现偏离中心。隐藏覆盖不是一个选项,我真的很讨厌弄乱 IE 特定的 css 和 IE 特定的脚本。

我尝试将一些层附加到正文和一些表单,但正文层总是显示在表单层的顶部(因此阻止输入的不透明层也会阻止我试图显示的 div 上的输入)。

我认为解决方案是让 div 调用隐藏的虚拟锚来执行原始按钮的回发。Sontek在他对相关问题的回答中提出了这一点。

我的实际问题:

我是否在使用假回传技巧的正确轨道上?我想如果我依赖 jquery 来实现模态对话框功能,我不应该担心回退。

或者,我是否应该继续处理表单添加的样式?

4

1 回答 1

2

如果您想要正常的 asp.net 行为(例如触发事件),您几乎无法将标签放回表单标签中。

话虽如此,如果您坚持使用 jQuery 模式,我认为触发回发并不是一件坏事。正如您在链接/相关问题中提到的那样,您可以在代码隐藏中获取回发引用GetPostBackEventReference,并传递您想要触发谁的事件的控件,例如:

//assuming your button is btnMyButton and
Page.ClientScript.GetPostBackEventReference(btnMyButton, null);

您可以将此 javascript 调用附加到任何其他按钮,包括您在表单标记之外移动的按钮。这将基本上连接回发并像往常一样引发该控件的事件。

不是最优雅的解决方案,但如果您需要使用 jQuery 模态,我认为您在正确的轨道上。

于 2010-01-21T20:49:35.243 回答