JQuery blockui& ASP.NET回发冲突

时间:2010-01-21 19:03:07

标签: asp.net jquery jquery-blockui

背景

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

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

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

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

该方法是一个实例方法,可能无法正常工作(用户和页面控件中记录的引用...)

我做了一些挖掘:

我修改了jquery blockui以附加到表单(并与选择器搏斗以移除块)但它将IE6和IE7重叠 - 覆盖从表单开始,整个对话框显示在偏离中心。隐藏叠加层不是一种选择,我真的很讨厌搞乱IE特定的css& IE特定的脚本。

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

我认为解决方案是让div调用一个隐藏的虚拟锚来执行原始按钮的回发。 sontek在回答相关问题时建议这样做。

我的实际问题:

我是否使用假回传技巧走上正轨?我想如果我依靠jquery进行模态对话功能,我不应该担心回退。

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

1 个答案:

答案 0 :(得分:2)

如果您想要正常的asp.net行为(例如要触发的事件),那么您几乎不会将标记放回到表单标记内。

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

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

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

不是最优雅的解决方案,但如果您需要使用jQuery模式,我认为您正在使用它。