【问题标题】:MVC: View with remote hosted layoutMVC:使用远程托管布局查看
【发布时间】:2013-01-07 21:03:58
【问题描述】:

因此,我们的客户希望将我们的 MVC 应用程序嵌入到他们的网站中。我想到的第一个解决方案 - 将我们的应用程序加载到他们网站上的 iFrame 中,我们就完成了。

结果他们想要的东西有点复杂(而且我很愚蠢)。 我们仍然必须托管我们的应用程序,但是当用户访问我们的网站时,它必须看起来像他们的网站以及我们的内容 - 我们的视图、他们的布局 - 但他们想要托管布局。

因此,每次发出请求时,都会从客户端的站点检索一个页面(布局),将我们渲染的视图推入其中并显示给最终用户。

所以问题是:是否有可能做客户想要的,因为我无法理解如何使用 MVC 来完成?

有什么建议或建议吗?

【问题讨论】:

  • 我会退后一步,问问你自己和你的客户,他们真正需要什么?以及为什么他们要求以这种可怕的方式。可能他们不想要您的应用程序,他们想要您的内容,然后 JSON 和 WebApi 方式是最好的。

标签: asp.net asp.net-mvc-3 c#-4.0 razor


【解决方案1】:

最好的解决方案是简单地将您的数据公开给他们,让他们以任何他们想要的方式呈现它。你可以让你的控制器简单地为他们吐出 JSON,让他们随心所欲地处理它。然而,这一切都假设没有对视图进行任何繁重的工作。

【讨论】:

    【解决方案2】:

    他们所要求的实际上超出了 MVC 视图引擎的功能,但它仍然是可能的。视图引擎不像 Web 浏览器那样从各种 Web 资源中组装一个网页。浏览器将根据 html 中指定的内容加载 JS、CSS 和图像。视图引擎将根据 MVC 应用程序的目录结构中的内容加载视图、模板和布局。它并非旨在从其他服务器获取这些文件。

    但是,我认为您可以完成这项工作,尽管它会充满安全问题。您可以在 Views 目录中创建一个符号链接,该链接链接到您的客户端托管的网络共享。在此共享中将是他们希望您使用的布局。现在,在 Views 目录中(不是在网络共享中)您自己的视图中,您可以引用布局:

    @{
        Layout = "~/Views/HostedNetworkShare/layout.cshtml";
    }
    

    出于安全考虑,我推荐这种方法,但我也看不出它为什么不能工作。它还需要您的客户在托管网络共享方面进行一些合作。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 2011-10-07
      • 2011-09-05
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2013-08-03
      相关资源
      最近更新 更多