C# 从iframe内部重定向到页面

C# 从iframe内部重定向到页面,c#,javascript,asp.net,.net,iframe,C#,Javascript,Asp.net,.net,Iframe,我刚刚开始在.NET framework中编写代码,因此,如果这个问题碰巧是无关紧要的,我深表歉意 我现在得到了什么 一个main.aspx页面,使用三个iframes进行简单布局 中间iframe内容需要是动态的(首先是一个login.aspx页面,然后是登录entryform.aspx) 第1期: 在iframe内登录login.aspx后,重定向到main.aspx 我找到的解决方案: ClientScript.RegisterStartupScript(this.GetType(),

我刚刚开始在.NET framework中编写代码,因此,如果这个问题碰巧是无关紧要的,我深表歉意

我现在得到了什么

一个
main.aspx
页面,使用三个
iframe
s进行简单布局

中间iframe内容需要是动态的(首先是一个
login.aspx
页面,然后是登录
entryform.aspx


第1期

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

我找到的解决方案

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

()


第2期

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

我想到的愚蠢的解决方案

将“#form”添加到url中,并收听main.aspx中的
hashchange
事件。但是,任何人都可以使用url本身访问表单


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


或者,在.NET中有一个request.setAttribute和getAttribute,就像在java中一样,我错过了它,这给我带来了困难?

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

在发现使用iframe并不是我的最佳想法后,我采纳了的建议,并研究了如何从其他网页获取内容。在我的情况下,它将来自同一个域和其他域

因为我用的是4.0v.NET而不是

代码

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);
参考资料


在我发现使用iframe并不是最好的主意之后,我采纳了他的建议,并研究从其他网页获取内容。在我的情况下,它将来自同一个域和其他域

因为我用的是4.0v.NET而不是

代码

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);
参考资料


将参数传递到Main.aspx不是更容易吗?例如

ClientScript.RegisterStartupScript(this.GetType(),"scriptid", "window.parent.location.href='main.aspx?LoadEntry=true'", true);
“main.aspx”中的客户端JavaScript代码将从“location.search”读取该参数,如果设置了“LoadEntry=true”,则将中间帧的SRC设置为“entryform.aspx”


当然,在“entryform.aspx.cs”中,您需要检查是否确实进行了正确的登录(例如,设置了一些会话变量),这样就没有人能够简单地手动将URL设置为“main.aspx?LoadEntry=true”以绕过登录。

将参数传递给main.aspx不是更容易吗?例如

ClientScript.RegisterStartupScript(this.GetType(),"scriptid", "window.parent.location.href='main.aspx?LoadEntry=true'", true);
“main.aspx”中的客户端JavaScript代码将从“location.search”读取该参数,如果设置了“LoadEntry=true”,则将中间帧的SRC设置为“entryform.aspx”


当然,在“entryform.aspx.cs”中,您需要检查是否确实进行了正确的登录(例如,设置了某些会话变量),这样就没有人能够简单地手动将URL设置为“main.aspx?LoadEntry=true”绕过登录。

稍后将修改布局,以包含来自另一个网站的内容和来自服务器的一些其他文档,即我为什么选择iframe进行布局这些网站是否都位于同一个域中?它们都是ASP.NET吗?不,不是同一个域,它们是带有struts框架的jsp页面,有点像Web服务。好的,还有一个,我应该能给你举个例子:你对ASP.NET中的身份验证工作有多熟悉,FormsAuthentication可以接受吗?我假设ASP.NET应用程序驱动“中间帧”?@tisont。我不熟悉表单身份验证,但我会很高兴地学习,即使你能给我推荐信,我也会充分研究它们,我希望能正确地做到这一点。因此,请给我指出正确的方向版面稍后将被修改,以包括来自另一个网站的内容和来自服务器的一些其他文档,即为什么我选择iframe进行版面设计这些网站都位于同一个域吗?它们都是ASP.NET吗?不,不是同一个域,它们是带有struts框架的jsp页面,有点像Web服务。好的,还有一个,我应该能给你举个例子:你对ASP.NET中的身份验证工作有多熟悉,FormsAuthentication可以接受吗?我假设ASP.NET应用程序驱动“中间帧”?@tisont。我不熟悉表单身份验证,但我会很高兴地学习,即使你能给我推荐信,我也会充分研究它们,我希望能正确地做到这一点。因此,请给我指出正确的方向。正如蒂森建议的那样,我已经使用了形式验证,它也起到了作用。但从长远来看,我会做很多重定向和显示身份验证失败的消息,我只是想用div代替iframe,是的,我已经使用了FormAuthentication,正如Tieson所建议的,它也起了作用。但从长远来看,我会做很多重定向和显示身份验证失败消息的工作,我只是想用divs代替iframe会很好,因为这一切都是在服务器上完成的,它似乎还有一个好处,那就是让你对用户最终与之交互的内容有更高程度的控制;处理iFrame时,您依赖于客户端的浏览器来实现预期的行为。干得好。别忘了你可以接受自己的答案(这有助于暗示问题已经解决,但并不妨碍将来有人添加新答案)。@TiesonT.,关于标记答案,你可以发布你的建议,我会