使用ASP.NET MVC的网站中的网站

时间:2011-12-08 18:01:45

标签: asp.net-mvc ajax iframe master-pages

我已经找到了答案,我只提出了两种可能性,我都不是非常热衷于此。

我有一个现有的ASP.NET MVC应用程序,我们将添加一个模块。此模块也可以与我们拥有的其他产品共享,因为它涵盖了许多共同点。我不想为两个独立的网站重写这个模块(甚至只是UI部分)所以我最初的想法是我们只是将它作为一个独立的站点开发(并且因为我们的产品套件支持单点登录套件没有问题,必须再次登录到新网站)。但是,有人告诉我,它必须看起来像是现有网站的一部分,它必须位于自己的标签内(母版页有标签显示您所在网站的哪个部分),因为它是如何形成的市场营销 - 现有产品的集成组件。

所以,我在想如何让这个网站坐在现有网站的标签内。

我认为最简单的事情就是iframe。我们已经在另一个选项卡上有一个iframe(虽然它是同一个项目的一部分 - 一些遗留的Web表单依赖于与MVC不兼容的第三方控件)并且它可以工作......直到某一点(它实际上是相当的)一个丑陋的解决方案和下一个版本的计划摆脱它)。我宁愿不再这样做了。

另一个想法是,在标签的内容区域内只有一个div,我可以使用AJAX调用替换内容,因为用户通过这个新模块的工作进展,所以它看起来像是一个无缝的网站。再一次,这让我充满了恐惧,因为我觉得它不会很好......当然我们会在谷歌分析等领域失败(我们要么完全失败,要么我们必须手工制作比特)并允许用户为页面添加书签(当他们打开选项卡时,他们看到的唯一URL是第一个,因为之后的所有内容都是由AJAX调用组成的。

有没有人对如何进一步追求这一点有任何建议?有没有办法让第一个ASP.NET MVC应用程序提供第二个将使用的母版页?或者是否有类似的机制反向我可以让第一个ASP.NET MVC应用程序使用第二个作为内容提供者进入第一主页?

或者我的现实选项是IFrame还是AJAX?

2 个答案:

答案 0 :(得分:1)

科林,

我对您的要求非常相似,还需要在同一个应用程序池中运行这两个站点。我实际上已经能够使用portable areas提出概念证明。不是超级优雅,但我相信它会做到这一点。

如果找到更好的方法,请告诉我。

答案 1 :(得分:0)

另一种选择是在其自己的库中为共享模块创建控制器和逻辑。 ASP.Net MVC应用程序将处理位于不同库中的控制器。

缺点是使用此“共享”模块的任何应用程序都必须拥有自己的视图,这意味着您必须复制视图并单独维护这些视图,但至少您不会复制控制器逻辑。

这就是我在类似场景中所做的。我确实看过根据this example在'共享库'中包含一些已编译的视图,但是因为你无法真正包含脚本和图像,所以它似乎不值得努力。