代码之家  ›  专栏  ›  技术社区  ›  Broam

jquery blockui和asp.net回发冲突

  •  2
  • Broam  · 技术社区  · 14 年前

    背景:

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

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

    jquery blockui做的一件事是,如果传递一些HTML元素——它将从页面中的位置移除控件,并将其附加到 身体 .

    ASP.NET 2.0似乎希望回发的控件位于 形式 您可以使用$(AspNetForm)查找。jquery blockui刚刚将它们移动到 身体 所以回邮 永不开火 .

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

    我做了一些挖掘工作:

    我修改了jquery blockui以附加到表单(并与选择器搏斗以删除该块),但它借用了ie6和ie7——覆盖从表单开始,整个对话框显示为偏离中心。隐藏覆盖并不是一个选项,我真的不喜欢搞混特定于IE的CSS&IE脚本。

    我尝试将一些层附加到主体,一些附加到窗体,但是主体层总是显示在窗体层的顶部(因此,阻止输入的不透明层也将阻止我尝试显示的DIV上的输入)。

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

    我的实际问题:

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

    或者,我应该继续对表单添加的样式进行处理吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   KP.    14 年前

    如果您希望正常的ASP.NET行为(如事件触发),则很难将标记放回表单标记中。

    也就是说,如果您坚持使用jquery模式,我认为触发回发并不是一件坏事。正如您在链接/相关问题中提到的,您可以获取回发引用 GetPostBackEventReference 在你的代码后面传递你想要触发的事件,例如:

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

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

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

    推荐文章