如何在ASP.NET MVC中使用iframe加载网页?

3

我有一个外部网页,需要使用HTTP Post进行访问,并在iframe中包含。该网页提供了一组示例指令以访问该页面,如下所示,但它们假设使用Windows Form解决方案;而我正在使用ASP.NET MVC。

我该如何将这个WebBrowser中心的解决方案转换为可以成功发布到外部网站并将结果加载到iframe中的内容?

private WebBrowser wb_inline = null;

private void Submit_Click(object sender, EventArgs e)
{
    string url = "http://www.example.com";
    string setupParameters = "account_token=abc123";

    ServicePointManager.ServerCertificateValidationCallback = 
        (s, cert, chain, ssl) => true;
    ASCIIEncoding encoding = new ASCIIEncoding();
    var postData = setupParameters;

    if (null == wb_inline)
    {
        wb_inline = new WebBrowser(this);
        wb_inline.Location = new System.Drawing.Point(100, 277);
        wb_inline.Size = new System.Drawing.Size(675, 650);
    }
    Controls.Add(wb_inline);
    wb_inline.Visible = true;
    string AdditionalHeaders = "Content-Type: application/json";
    byte[] data = encoding.GetBytes(postData);
    wb_inline.Navigate(payProsUrl, "", data, AdditionalHeaders);
}

有没有办法像这样使用HttpWebResponse(或其他控件)并将其包含在iframe中?我一直在尝试调整这个,但还没有成功。

1
为什么不使用JavaScript直接在浏览器中完成呢?这样的话,您甚至都不需要使用iframe。 - Floremin
@Floremin:最终,我还是采用了这样的方法,尽管Vsevolod Goloviznin已经回答了我提出的问题。由于在C#中将页面加载到iframe中存在一些问题(即跨域脚本),因此我改为使用JavaScript直接将网页加载到iframe中。 - Brisbe
1个回答

4
根据w3schools的说法:
内联框架用于在当前HTML文档中嵌入另一个文档。
也就是说,iframe用于通过给定的url加载页面内容并呈现给用户进行交互。之后,您对加载的页面所做的操作有很少控制权(他可以单击链接、发布表单等)。您不能向iframe发送HTTP请求,因为它只是显示另一个页面的“窗口”,不支持复杂的情况。
还有一件事需要考虑的是,你正在加载的网页可能会受到保护,无法嵌入到iframe中。
实际上,有一些选项可以实现你想要的效果。对于使用iframe的纯服务器端解决方案,您应该执行以下操作:
1.创建一个操作方法,该方法将对您需要的url执行HTTP POST请求并获取结果以供呈现:
public ActionResult PostAndShow() 
{
   //do the posting 
   string result = requestStream.ReadToEnd(); //you can have similar code to fetch the server response
   return Content(result);
}

2. 在您的网页中,您将创建一个 iframe,该框架将指向您的操作 PostAndShow 并显示您向第三方服务器发出的 HTTP POST 请求的结果。

<iframe src="@Url.Action("PostAndShow", "My")" width="400" height="300"></iframe>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接