选项卡式应用中的多个.NET应用

时间:2012-04-02 15:02:33

标签: asp.net .net tabs webforms

我们有几个相当大的ASP.NET Web项目,我们被要求在一个标签界面下组合。因此,例如,当您单击选项卡1时,我们将在下面显示项目A.然后,如果您单击选项卡2,我们将显示项目B.我在下面将每个项目称为“应用程序”,因为它们为我们的用户执行不同的功能。

有没有人有好办法做到这一点?这里的一个关键问题是每个应用程序必须记住状态。因此,如果用户在应用程序A /选项卡1上填写Web表单的中途,那么他们点击另一个选项卡稍微做一些工作,当他们回到应用程序A /选项卡1时,他们应该看到他们的半完成表单(尚未保存到数据库中)。

我们已经讨论了几种选择:iframe可能是一种可能性,但我们害怕承诺,因为他们可能会失宠,他们可能会调整大小和打印问题。我们不认为我们可以简单地将每个应用程序嵌入并隐藏/显示它,因为您在选项卡之间单击,因为如果您打开了很多选项卡,页面的大小会变得非常大,而当.NET时我们会遇到问题app / page触发回发(我们的许多应用都使用传统的.net回发)。

在某些方面,我们基本上被要求编写一个在每个标签中都有.net应用的浏览器。我们实际上无法使用浏览器来执行此操作,因为我们无法强制浏览器打开新选项卡(而不是单独的窗口)。

有没有人对如何将多个.NET应用程序“包装”到一个选项卡式UI中有任何想法?或者这根本不可能?或者注销iframe解决方案是不对的?每个.net项目都可以在iframe中显示,iframe在不可见时会被隐藏?

感谢。

3 个答案:

答案 0 :(得分:0)

在项目中我开发了一个自定义MVC框架。在选项卡内,您将为每个选项卡(应用程序)配备一个控制器。数据将使用视图状态或用于每个应用程序的模型保存在共享视图中。

答案 1 :(得分:0)

可能的解决方案可能是:

  • 修改现有的WPF / WinForms应用程序,以便主窗口包含 只有一个用户控件。所有应用程序逻辑应该是 包含在用户控件或用户包含的元素中 控制。
  • 创建一个“shell”应用程序,其中包含对其他应用程序的程序集引用。
  • 将用作“主”屏幕的用户控件放入选项卡中。您可以使用WindowsFormsHost在WPF应用程序中托管Windows窗体控件(反之亦然,使用ElementHost)。

剩下的问题是必须保留状态的对话框,这可能会在更改标签时出现问题。

答案 2 :(得分:0)

选项1 为"标签创建自定义服务器控件"并使用选项卡在您要导航到的每个应用程序中引用它。您可以完全控制选项卡"点击"每个应用程序中的事件,以便您可以保存状态。如果需要在同一站点上将每个应用程序部署为虚拟目录,则每个应用程序都可以是自己的网站。

我可能会从代码中提取选项卡配置并将其放在配置文件或数据库中,以便您可以从选项卡UI添加和减去应用程序,而无需重新编译和重新部署选项卡控件。

选项2 创建一个"母版页"然后在页面中使用javascript来隐藏和显示每个应用程序中的iframe。您可以使用javascript确保iframe始终最大化为内容大小。使用iframe,您不必担心状态,因为它会同时出现在浏览器中。

可能的问题:

  1. 超时,如果某个应用程序被隐藏且未获得输入,是否会超时?
  2. 跨域脚本(如果它们不在同一个域中)
  3. 打印可能需要自定义编码解决方案,具体取决于您希望的外观