我有一个 Web 应用程序,它位于另一个 Web 应用程序的 iframe 中(两者都在 ASP.NET MVC 中完成)。
是否可以使用 C# 从 iframe 内的应用程序读取来自父 Web 应用程序的查询字符串参数?
我有一个 Web 应用程序,它位于另一个 Web 应用程序的 iframe 中(两者都在 ASP.NET MVC 中完成)。
是否可以使用 C# 从 iframe 内的应用程序读取来自父 Web 应用程序的查询字符串参数?
您必须将要从 iframe 中的页面从父页面读取的任何数据附加到 iframe url 本身。例如:
<iframe id="yourid" src="yourpage.aspx?parentdata=whatever_data_to_be_captured">
</iframe>
现在,您必须从 iframe 页面解析 src 值以捕获数据。
这是一个技巧,据我所知,似乎没有直接的方法可以从 iframe 访问父页面数据。
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
然后您将读取查询字符串,就好像它是内部应用程序的查询字符串一样。
您应该使用%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>