作为我的情况的前言,应该注意我使用的是 ASP.NET (C#) 和 jQuery。
所以,这是布局:我有一个顶部 div(标题/菜单),它跨越了页面的整个水平长度。在此标题/菜单下,我还有 2 个其他 div。左边的 div 是一个带有页面链接的导航 div。右侧 div 是 Ajax 从左侧 div 中的链接加载的页面的显示 div。
看看能不能画出来。。。
=====================================================
= Top Div (header/menu) =
=====================================================
= = =
= = =
= = =
= = =
= Left Div = Right Div =
= (Navigation) = id = "rightdiv" =
= = (Displays content loaded by =
= = Ajax from the links in the =
= = left div) =
= = =
= = =
= = =
= = =
=====================================================
到目前为止,一切正常。我可以单击左侧 div 中的链接并使用 jQuery... 将它们加载到右侧 div 中$('#rightdiv').load('pagenamehere.aspx');
。
这就是问题所在...
我正在加载到正确 div 中的页面包含一个 UpdatePanel(每页 1 个)。当单击 UpdatePanel 中的按钮时(应该只刷新 UpdatePanel 本身的内容),它会将内容拉出正确的 div (它实际上进入该页面)并刷新 UpdatePanel 中的内容,就像我访问过一样该页面本身并按下按钮。
我的问题是...
如何防止这种情况并让 UpdatePanel 在使用 Ajax 引入的页面上工作?
这里有一些额外的(奇怪的)信息......
我显示加载整体布局的原始时间('5/23/2013 10:15:11 AM')。
我在右侧 div 的页面中 Ajax 并显示加载时间(在该页面本身上但在 UpdatePanel 之外)('5/23/2013 10:15:17 AM')。这表明我在布局加载几秒钟后单击了左侧 div 中的页面链接。
当我点击按钮刷新 UpdatePanel 时,它会显示我点击 UpdatePanel 本身内部的按钮的时间('5/23/2013 10:15:28 AM')。此时,它将页面从右侧 div 中拉出(好像我要从头开始转到此页面)并保留此页面加载到右侧 div 的原始 DateTime('5/23/2013 10 :15:17 AM')。
=====
我已经尝试了各种形状和形式来修改 UpdatePanel 和 ScriptManager 以尝试阻止它这样做,但无济于事。
我什至尝试将 UpdatePanel 放在正确的 div 周围,而不是放在每个内容页面上(这样使用 Ajax 加载的页面只会在回发时刷新该 div)。
我确信有一种方法可以在通过 Ajax 加载的页面上使用 UpdatePanel,但我似乎无法在任何地方找到一个可行的示例或答案。
任何帮助深表感谢。谢谢。
编辑1:
当右 div 中的内容执行 PostBack(因此需要 UpdatePanel)时,我们不希望在左 div(由 Ajax 引入)中进行的搜索丢失。如果它从右 div 执行 PostBack,则整个布局将被刷新,而不仅仅是右 div 中的内容。
编辑2:
我应该澄清一下,这只是我们试图完成的一个简单示例。我们希望将正确 div(整个 .aspx 页面)中的内容回发到 PostBack,但仅限于 UpdatePanel 中。我们需要这种能力,以便整个布局(顶部 div、左侧 div 和右侧 div)不会在右侧 div 页面的 PostBack 上刷新。
基本上,我们需要能够在不更改顶部和左侧 div 的情况下在右侧 div 中进行 PostBack。当我们通过 Ajax 引入正确的页面时,正确页面上的 UpdatePanel 似乎不尊重布局并打破它。