从iframe内部重定向到页面

时间:2013-09-02 11:28:42

标签: c# javascript asp.net .net iframe

我刚刚开始在.NET框架中编写代码,所以如果这个问题恰好具有微不足道的话我会道歉。

我现在得到了什么

使用三个main.aspx

的简单布局的iframe页面

enter image description here

中间iframe内容需要是动态的(首先是login.aspx页面并且在记录entryform.aspx后)


问题#1

在iframe中登录 login.aspx 后,重定向到 main.aspx

我找到的解决方案

ClientScript.RegisterStartupScript(this.GetType(),"scriptid", "window.parent.location.href='main.aspx'", true);

http://forums.asp.net/t/1273497.aspx


问题#2

重定向/记录后如何将中间iframe内容从 login.aspx 更改为 entryform.aspx

我想到的愚蠢的解决方案

'#form'添加到网址并在 main.aspx 中收听hashchange事件。但是,任何人都可以使用网址本身进入表单。


那么,基本上我如何找到一种安全的方式告诉 main.aspx 页面,它需要在重定向/记录后更改它的中间iframe内容

或者在.NET中有一个 request.setAttribute和getAttribute ,就像在我错过的java中一样,让我感到困难?

3 个答案:

答案 0 :(得分:2)

跨页面和域传递变量或值不会有问题,您可以使用post方法和跨页面发布

答案 1 :(得分:2)

在我发现iframe的使用并不是最好的想法之后,我提出了Tieson T的建议并调查了HttpClient以从其他网页获取内容。就我而言,它将来自同一个域和其他域。

由于我使用的是4.0v .NET而不是HttpClient,因此我使用了HttpWebRequest

<强>码

HttpWebRequest request = (HttpWebRequest)WebRequest.Create (http://localhost:1706/WebSite3/test.html);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader reader = new StreamReader(response.GetResponseStream(),encode );
string html= reader.ReadToEnd();
myDiv.innerHtml(html);

<强>参考

答案 2 :(得分:0)

将参数传递给Main.aspx会不会更容易? E.g。

ClientScript.RegisterStartupScript(this.GetType(),"scriptid", "window.parent.location.href='main.aspx?LoadEntry=true'", true);

'main.aspx'中的客户端JavaScript代码将从'location.search'读取该参数,如果设置了'LoadEntry = true',则将中间帧的SRC设置为“entryform.aspx”。 / p>

当然在“entryform.aspx.cs”中你需要检查是否真的发生了正确的登录(例如设置了一些Session变量)所以没人能够简单地将URL手动设置为“main.aspx?LoadEntry” = true“绕过登录。