从iframe内部读取查询字符串参数

时间:2013-04-10 06:25:20

标签: c# asp.net-mvc iframe query-string

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

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

3 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:1)

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

从那里,您可以执行window.parent.location(或window.top.location),其中包含所请求网址的各种属性。

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

请在此处查看答案:How to get the query string by javascript?以及更详细的答案:How can I get query string values in JavaScript?


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

<iframe src=""></iframe>

这一切都取决于您设置内框的src属性的方式和时间。你需要以某种方式改变它。

从你的外框你可以做到:

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

或者,从框架内部开始,您将首先获取查询字符串,然后执行window.[top/parent].location = the url + query string

重定向/重新加载

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

答案 2 :(得分: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>