2

我有一个 Web 应用程序,它位于另一个 Web 应用程序的 iframe 中(两者都在 ASP.NET MVC 中完成)。

是否可以使用 C# 从 iframe 内的应用程序读取来自父 Web 应用程序的查询字符串参数?

4

3 回答 3

4

您必须将要从 iframe 中的页面从父页面读取的任何数据附加到 iframe url 本身。例如:

<iframe id="yourid" src="yourpage.aspx?parentdata=whatever_data_to_be_captured">
</iframe>

现在,您必须从 iframe 页面解析 src 值以捕获数据。

这是一个技巧,据我所知,似乎没有直接的方法可以从 iframe 访问父页面数据。

于 2013-04-10T06:45:36.560 回答
1

window.parent应该为您提供对 Parent 的引用。还有一个window.top提供直接父级,因此如果您的应用程序嵌套多次,您应该使用正确的属性。

从那里您可以执行window.parent.location(或window.top.location)具有请求的 URL 的各种属性的操作。

要实际阅读查询字符串,这里有关于此的帖子。您只需要将 window.location 替换为 window.parent 或 window.top :

在此处查看答案:如何通过 javascript 获取查询字符串?以及更详细的答案:如何在 JavaScript 中获取查询字符串值?


在控制器中:既然你说你需要控制器中的查询字符串。您仍然需要像我上面描述的那样获取查询字符串,然后通过将其放入对src内部框架的调用中,将其传递给控制器​​。

<iframe src=""></iframe>

这完全取决于您如何以及何时设置src内部框架的属性。你需要在某个时候以某种方式改变它。

从你的外框你可以做:

document.getElementById('myframe').src
 = "http://innerApplication/innerController/actionmethod/?" 
   + window.location.search;

或者,从框架本身内部,您将首先获取查询字符串,然后通过执行重定向/重新加载window.[top/parent].location = the url + query string

然后您将读取查询字符串,就好像它是内部应用程序的查询字符串一样。

于 2013-04-10T06:29:17.650 回答
0

您应该使用%26而不是&发送到 iframe,例如:

Link : 2.asp?ppp=/Payam.asp?sid=1%26PID=1&sa=12313 <br>

在代码中:当我requset.queryString("ppp")在父母中时,它显示:/Payam.asp?sid=1&PID=1

您可以将其用作 iframe 的来源,它有两个参数:

<IFRAME name="My"  src='<%=ppp %>'></IFRAME> 
于 2014-05-28T09:30:56.447 回答