asp.net - JQuery blockui 和 ASP.NET 回发冲突

标签 asp.net jquery jquery-blockui

背景:

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

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

jquery blockui 所做的事情之一是,如果您向它传递一些 html 元素,它会将控件从其在页面中的位置删除,并将其附加到正文

ASP.NET 2.0 似乎希望回发的控件位于您可以通过 $(#aspnetForm) 找到的表单中。 jquery blockui 只是将它们移动到 body,因此回发永远不会触发

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

我做了一些挖掘:

我修改了 jquery blockui 以附加到表单(并与选择器较量以删除该 block ),但它对 IE6 和 IE7 不起作用 - 覆盖层从表单开始,整个对话框看起来偏离中心。隐藏覆盖层不是一个选项,我真的很讨厌弄乱 IE 特定的 css 和 IE 特定的脚本。

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

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

我的实际问题:

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

或者,我应该继续研究表单添加的样式吗?

最佳答案

如果您想要正常的 asp.net 行为(例如触发事件),则必须将标记放回表单标记中。

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

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

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

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

关于asp.net - JQuery blockui 和 ASP.NET 回发冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112023/

相关文章:

jquery - 如何防止 jQuery BlockUI 触发

c# - 设置中继器中项目的 ID

asp.net - 我可以在哪里存储网站的用户权限?

jquery - 重新绑定(bind)hoverIntent jQuery插件

jquery - 无法使用 Bootstrap 获得下拉菜单

View 之间的 ajax 加载 ASP.NET MVC 4 KendoUI

javascript - 在表单提交时将 JavaScript 日期数组绑定(bind)到页面的 View 模型

asp.net - Razor 页面部分 View : Model is not defined

php - 单击文件链接时仅保存选项

c# - 每个 Asp.net 回发中的 JQuery BlockUI 进度指示器