【问题标题】:Server side include external HTML?服务器端包含外部 HTML?
【发布时间】:2009-09-30 11:18:11
【问题描述】:

在我的 asp.net-mvc 应用程序中,我需要包含一个显示旧页面的页面。 此页面的主体是通过调用现有的 Perl 脚本创建的。 此 Perl 脚本在外部托管。

有没有办法做这样的事情:

<!-- #Include virtual="http://www.example.com/theScript.plx"-->

【问题讨论】:

    标签: c# .net asp.net-mvc server-side-includes


    【解决方案1】:

    不作为直接包含,因为ASP.NET server-side-includes 需要在服务器上编译页面。

    当页面加载时,您可以使用jQuery 从该 URL 下载 HTML,但我知道这并不完美。

    或者(我不知道这是否可行)您可以从 ASP.NET MVC 控制器对 perl 网页执行WebRequest,并将生成的 HTML 作为文本放入视图中。这样你就可以利用output caching之类的东西来限制对不经常更改的perl页面的点击。

    【讨论】:

      【解决方案2】:

      如果您想一次性完成所有操作,您可以从服务器发出 HTTP 请求并将内容写入页面?

      类似这样的:

      Response.Write(GetHtmlPage("http://www.example.com/theScript.plx"));
      

      调用这个方法:

      public String GetHtmlPage(string strURL)
      {
          // the html retrieved from the page
          String strResult;
          WebResponse objResponse;
          WebRequest objRequest = System.Net.HttpWebRequest.Create(strURL);
          objResponse = objRequest.GetResponse();
          // the using keyword will automatically dispose the object 
          // once complete
          using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
          {
              strResult = sr.ReadToEnd();
              // Close and clean up the StreamReader
              sr.Close();
          }
          return strResult;
      }
      

      (大多数代码公然从here 撕下,因此未检查)

      【讨论】:

      • 一开始我也采用了类似的方法。我的控制器将获取 HTML 并通过 TempData 传递它。然而,从 plx 返回的结果是带有相关链接的整个页面(包括头部、正文等)。所以无论如何它都必须放在一个框架中。
      • 啊,我明白你的意思了,鲍里斯。框架可能是要走的路,除非你想走上剥离你不需要的 html 的道路——我不建议这样做:)
      • 或者,您可以先清除响应,然后写出页面,但是您将只发送来自其他服务器的响应。如果您需要发送标准布局、菜单或任何其他 html,您就会丢失它。
      【解决方案3】:

      您可以通过简单地使用框架并将框架源设置为需要包含的 url 以低调的方式实现这一点。这非常简单,无需任何服务器或客户端脚本即可关闭,因此如果可能的话,这将是我的首选方法。

      但是,如果您希望 html 看起来来自您的服务器,则需要手动包含它 - 通常使用 Neil 所说的 WebRequest。不过,您可能希望缓存远程页面以提高性能,因为它是一个 perl 脚本,我假设该页面是动态的,所以这可能不是一个好主意。

      【讨论】:

        猜你喜欢
        • 2013-12-11
        • 2010-11-18
        • 2011-06-30
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 2019-01-01
        • 2011-10-10
        相关资源
        最近更新 更多