【问题标题】:Website in a website with ASP.NET MVC使用 ASP.NET MVC 的网站中的网站
【发布时间】:2011-12-08 18:01:45
【问题描述】:

我已经搜索了这个问题的答案,但我只提出了两种可能性,这两种可能性我都不是很热衷。

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

所以,我在考虑如何让这个网站位于现有网站的标签内。

我认为最简单的就是 iframe。我们已经在另一个选项卡上找到了一个 iframe(尽管它属于同一个项目 - 一些依赖与 MVC 不兼容的第三方控件的遗留 Web 表单内容)并且它可以工作......在一定程度上(它实际上是一个丑陋的解决方案和下一个版本的计划摆脱它)。我不想再这样做了。

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

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

还是我的现实选择是 IFrame 或 AJAX 调用?

【问题讨论】:

  • 我在 google 上没有看到任何内容,但您可以使用 jquery 历史插件或父窗口中的 url 哈希来跟踪 iframe 的位置。这将允许用户为 iframe 页面添加书签。

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


【解决方案1】:

科林,

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

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

【讨论】:

    【解决方案2】:

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

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

    这是我在类似情况下所做的。根据this example,我确实查看了在“共享库”中包含一些编译视图,但由于您无法真正包含脚本和图像,因此似乎不值得付出努力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-23
      • 2017-12-09
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多