1

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

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

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

3 回答 3

2

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

当页面加载时,您可以使用jQuery从该 URL 下载 HTML,尽管我很欣赏这并不完美。

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

于 2009-09-30T11:23:04.950 回答
1

如果您想一次性完成所有操作,您可以从服务器发出 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;
}

(大多数代码从这里公然撕掉,因此没有检查)

于 2009-09-30T12:17:53.083 回答
0

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

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

于 2009-09-30T11:26:55.783 回答