user2587132
user2587132

Reputation:

redirecting to page from inside iframe

I have just now started coding in .NET framework, so my apologies if this issue happens to be of trivial nature.

What I got now

A main.aspx page with simple layout using three iframes

enter image description here

the middle iframe content needs to be dynamic (first a login.aspx page and after logging entryform.aspx)


Issue #1 :

After logging in login.aspx inside the iframe, redirecting to main.aspx

The solution I found:

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

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


Issue #2

After redirecting/logging how do I change the middle iframe content from login.aspx to entryform.aspx?

The silly solution I thought of:

Add '#form' to the url and listen to hashchange event in main.aspx. But then, anyone can get to the form using the url itself.


So, basically how do I find a secure way to tell the main.aspx page that it needs to change it's middle iframe content after the redirecting/logging

Or by any chance there is a request.setAttribute and getAttribute in .NET like in java that I have missed and made things difficult for me?

Upvotes: 1

Views: 5182

Answers (3)

suff trek
suff trek

Reputation: 39767

Wouldn't it be easier to just pass a parameter to Main.aspx? E.g.

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

And client-side JavaScript code inside of 'main.aspx' would read that parameter from 'location.search' and if 'LoadEntry=true' is set - would set SRC of middle frame to "entryform.aspx".

Of course inside of "entryform.aspx.cs" you would need to check if correct login really took place (e.g. some Session variable is set) so nobody would be able to simple set URL manually to "main.aspx?LoadEntry=true" to bypass the login.

Upvotes: 0

user2587132
user2587132

Reputation:

After finding that the use of iframe isn't exactly the best idea in my case, I took Tieson T's advice and looked into HttpClient to fetch content from other web pages. In my case it will be both from same domain and other domains.

Since I have 4.0v .NET instead of HttpClient I used HttpWebRequest

code

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);

References

Upvotes: 2

Vinay Pandey
Vinay Pandey

Reputation: 8913

Passing variables or values across pages and domains wont be issue, you can use post method and cross page posting for that

Upvotes: 2

Related Questions