我有一个包含两个页面的asp.net应用程序添加/编辑客户和客户列表(查看)。 还有一个主机ASP.NET应用程序使用ajax tab container / accordian来托管iframe中的两个页面。因此,如下所示,TAB1包含iframe 1中的编辑客户页面,而TAB2包含查看客户页面(一次只能激活一个)。如果我必须从TAB2移动到TAB1(例如,用户点击客户列表中的编辑链接),那么我必须通过在查询字符串中传递tab的名称来刷新主机应用程序(这部分由Host App处理并且是唯一可用的方式切换TAB)。
除了查询字符串之外,将数据从TAB2传递到TAB1的最佳方法是什么?我不想通过附加查询字符串来更改主机应用程序URL,因为在不重新加载的情况下很难重置查询字符串。我的应用程序在webfarm中,并且具有基于IP会话亲缘关系的负载均衡器。我们目前在proc会话中使用但偶尔会失败,这是显而易见的。如果我无法删除out-proc会话,是否有任何经过验证的方法可以在webfarm中处理这种情况?
---------------------------------------------------------------- ASP.NET MAIN APP CONTENT VirDir-B [parent] **________________________________________________________________** TAB1 | TAB2 [iframe1] | [iframe2] { Edit Cust | { View Cust VirDir-A } | VirDir A } |
更新:
好吧,我使用javascript解决了这个问题,直接将iframe1的源码设置为querystring参数,因为我的所有VD都在同一个域中。
PSEUDO CODE:
在浏览页面上:
var tabContainer=$(parent.document).find('#TABCONTAINERID').control;
var iframe=$(parent.document).find('#TABCONTAINERID').children('#iframe1');
iframe.src="editCust.aspx?id=123"
tabContainer.set_activeTabIndex(0);
但是我很想知道如果我无法控制父应用程序(可能在不同的域中),如何处理这个问题。
答案 0 :(得分:-1)
至少可以使用我能想到的两种方法: