由于回发,JQueryMobile对话框显示两次

时间:2012-11-15 16:48:48

标签: asp.net jquery-mobile timer dialog postback

我有一个asp.net页面,其中包含一个嵌入在UpdatePanel中的计时器(UpdateMode =“Conditional”,ChildrenAsTriggers =“false”)。计时器负责每隔几秒更新一次该页面的某些组件。

页面上还有一些HyperLink控件,它们在单击时打开JQueryMobile对话框(data-rel =“dialog”)。问题是我提到的计时器每隔几秒就会引发一次回发。因此,当打开一个对话框然后关闭时,第一次这样的回发会导致对话框再次打开。

使用rel =“external”作为我提到的HyperLinks的另一个属性解决了问题,但这对我来说没有解决方案。这会导致完全重定向到对话框页面,而不是使用AJAX显示它(就像在当前页面顶部一样)。

我的想法是在点击任何超链接时停止计时器。这解决了问题,但我不知道如何在对话框关闭时再次启动计时器。是否可以检测JQueryMobile对话框何时关闭?我知道,这听起来很愚蠢,但我无法想出更好的主意。你能帮帮我吗?

所以基本上,我不希望JQueryMobile对话框页面在计时器滴答后第二次出现。你能告诉我如何实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

使用asp.net Web窗体和UpdatePannel的jQuery Mobile?这听起来像是一个可怕的组合。

jQuery Mobile和Web Forms从根本上说并不能很好地协同工作。 Web窗体需要包含所有控件(和大多数内容)的单个<form />元素的特定问题。 jQuery Mobile试图通过ajax加载来构建带有“虚拟”页面的DOM。这会通过提交整个表单而不是每个页面模板中找到的单个表单来打破PostBack模型。现在把UpdatePanels扔进那里......

您唯一的希望是使用单页模板,并禁用链接和表单上的所有ajax加载data-ajax="false"。并且对UpdatePanels说不。

asp.net MVC可以让你更好地控制这些问题。