我有一个Web应用程序,它位于另一个Web应用程序的iframe中(两者都在ASP.NET MVC中完成)。
是否可以使用C#从父Web应用程序中的iframe内的应用程序中读取查询字符串参数?
答案 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>