【问题标题】:JQuery blockui & ASP.NET postback conflictsJQuery blockui & ASP.NET 回发冲突
【发布时间】:2023-03-07 13:50:01
【问题描述】:

背景:

我在 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) 找到的 form 中。 jquery blockui 只是将它们移动到 body,所以回发 永远不会触发。

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

我已经做了一些挖掘工作:

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

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

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

我的实际问题:

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

或者,我应该继续纠结于表单添加的样式吗?

【问题讨论】:

标签: asp.net jquery jquery-blockui


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 这几乎是我们必须要做的。不在表单中的控件不会将其状态传递回服务器。虽然这对 textarea 来说很容易,但尝试使用客户端的东西来解决 asp:FileUpload 是一种我不想考虑的恐怖。
猜你喜欢
  • 1970-01-01
  • 2012-11-01
  • 2010-10-13
  • 2012-03-21
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多