我有一个 asp.net 应用程序,其中包含两个页面添加/编辑客户和客户列表(视图)。还有一个主机 ASP.NET 应用程序使用 ajax 选项卡容器/手风琴在 iframe 中托管以上两个页面。因此如下图所示,TAB1 包含 iframe 1 中的编辑客户页面,TAB2 包含查看客户页面(一次只能激活一个)。如果我必须从 TAB2 移动到 TAB1(例如,用户单击客户列表中的编辑链接),那么我必须通过在查询字符串中传递选项卡名称来刷新主机应用程序(这部分由主机应用程序处理,是唯一可用的方式切换选项卡)。
除了查询字符串之外,将数据从 TAB2 传递到 TAB1 的最佳方法是什么?我不想通过附加查询字符串来更改主机应用程序 url,因为如果不重新加载就很难重置查询字符串。我的应用程序在 webfarm 中,并且具有基于 IP 会话亲和性的负载均衡器。我们目前在 proc session 中使用,但它偶尔会失败,这很明显。如果我删除了进程外会话,是否有任何经过验证的方法可以在 webfarm 中处理这种情况?
-------------------------------------------------- -------------- ASP.NET 主要应用内容 VirDir-B [家长] **______________________________________________________________________ 选项卡1 | TAB2 [iframe1] | [iframe2] { 编辑客户 | { 查看客户 VirDir-A } | 虚拟目录 A } |
更新:
好吧,我使用 javascript 解决了这个问题,方法是使用 querystring 参数直接设置 iframe1 的源,因为我所有的 VD 都在同一个域中。
伪代码:
在查看页面上:
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);
但是我很想知道如果我无法控制父应用程序(可能在不同的域中),如何处理这个问题。