在我们的页面中打开外部页面

时间:2010-08-16 13:16:15

标签: c# javascript asp.net ajax asp.net-ajax

我曾经使用iframe实现上面的标题,但现在我不想再使用它了我脑子里有一些计划我需要通过在我们的asp.net页面中打开一个外部页面来实现它们使用任何iframe 我只有简单的aspx页面与div tage和面板以及其他一些服务器端组件,我只是想知道如何在没有iframe的情况下做到这一点?我不想设计新的复杂控件,但我正在寻找一些可以为我做的方法。

我必须提一下,我需要控制外部网站加载的区域与iframe一样,但区别在于iframe无法通过ajax处理,即使您将iframe放在更新面板中,您的页面也会刷新并回发你是以编程方式更改src值(在c#代码中)所以我们必须设计一些其他方法什么是解决方案?

我以为我可以提出请求获取一些HTML并显示到div但我无法实现它。

4 个答案:

答案 0 :(得分:4)

你可以

  1. 在服务器端创建WebRequest,然后将div的文本设置为HTML返回
  2. 您可以创建一个不可见的iFrame来发出请求,然后使用JavaScript从iFrame中抓取HTML并将其放入DIV中。 (编辑:评论表明这不起作用)
  3. 由于跨站点脚本问题,您通常无法对外部网站进行调用(如XmlHttpRequest)。

答案 1 :(得分:0)

根据设计,您的直接请求“在我们的asp.net页面中打开外部页面而不使用任何iframe”是不可能的。

你提到了AJAX。您可以使用AJAX加载页面,删除标题(或执行服务器端)并将<body>标记替换为<div>标记(或者也可以使用服务器端)。这样,您就可以将页面内容放在任何您喜欢的位置。作为容器,我建议你使用块级元素,<div>就足够了。

这里唯一的(!)问题是:浏览器不尊重这样的跨网站请求。您可以使用WebRequest或类似方法从其他地方加载页面来解决此服务器端问题。

答案 2 :(得分:0)

取决于您要合并数据的位置。如果您想在客户端浏览器上合并数据,除了框架之外,您唯一的其他选择是使用Javascript / Ajax。

您可以在页面加载时执行 jQuery.ajax()并在div上使用 html()方法,使用该AJAX调用的文本结果填充它

尝试尽可能少地使用WebForms控件层次结构和生命周期。听起来你的问题可以通过AJAX解决,如果你不介意页面加载的第二个请求。

如果您想合并服务器端的内容(很少正确的事情),您可以使用System.Net.HttpWebRequest获取并合并数据,然后再将其返回到浏览器

答案 3 :(得分:-1)

在你的情况下,没有替代iframe。由于安全问题,您无法向其他网站发出Ajax请求。您可以检索单个页面服务器端的内容并将其呈现给客户端,但不会包含任何功能,因为内容现在在您自己的站点的上下文中运行。