我刚刚开始在.NET框架中编写代码,所以如果这个问题恰好具有微不足道的话我会道歉。
我现在得到了什么
使用三个main.aspx
iframe
页面
中间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中一样,让我感到困难?
答案 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“绕过登录。