我曾经使用iframe实现上面的标题,但现在我不想再使用它了我脑子里有一些计划我需要通过在我们的asp.net页面中打开一个外部页面来实现它们使用任何iframe 我只有简单的aspx页面与div tage和面板以及其他一些服务器端组件,我只是想知道如何在没有iframe的情况下做到这一点?我不想设计新的复杂控件,但我正在寻找一些可以为我做的方法。
我必须提一下,我需要控制外部网站加载的区域与iframe一样,但区别在于iframe无法通过ajax处理,即使您将iframe放在更新面板中,您的页面也会刷新并回发你是以编程方式更改src值(在c#代码中)所以我们必须设计一些其他方法什么是解决方案?
我以为我可以提出请求获取一些HTML并显示到div但我无法实现它。
答案 0 :(得分:4)
你可以
由于跨站点脚本问题,您通常无法对外部网站进行调用(如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请求。您可以检索单个页面服务器端的内容并将其呈现给客户端,但不会包含任何功能,因为内容现在在您自己的站点的上下文中运行。