md0333
asked on
open.window from codebehind
I've seen several solutions to doing this but I have yet to get one to work...
I have a website that I'm trying to get (from login) to open a web application in a new window. Once the user logs in and gets validated I set some session variables and then choose the page the user goes to based on their security level. If I use the response.redirect() then it works fine... just doesn't open in a new window but my point is that I know the user is being validated. But if I try to call the javascript (or build the javascript) from codebehind it immediately takes the app to the logout screen.
Here is the last piece of code I tried
you can see I have tried a couple different methods... I've tried several others also including this one.
I put the alert in there just to see if it was even hitting the javascript code and it is not... not sure what to try next.
thanks
I have a website that I'm trying to get (from login) to open a web application in a new window. Once the user logs in and gets validated I set some session variables and then choose the page the user goes to based on their security level. If I use the response.redirect() then it works fine... just doesn't open in a new window but my point is that I know the user is being validated. But if I try to call the javascript (or build the javascript) from codebehind it immediately takes the app to the logout screen.
Here is the last piece of code I tried
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
sb.Append("<script language='javascript'>")
sb.Append("window.open('webapp.aspx', '', 'resizable=yes, menubar=no, toolbar=no, status=no, location=no, channelmode=yes')<")
sb.Append("/script>")
If Not ClientScript.IsClientScriptBlockRegistered(Me.GetType(), "PopupScript") Then
ClientScript.RegisterClientScriptBlock(Me.GetType(), "openPopUp", sb.ToString())
'ClientScript.RegisterStartupScript(Me.GetType(), "openPopUp", sb.ToString())
'Response.Write(sb.ToString())
End If
you can see I have tried a couple different methods... I've tried several others also including this one.
codebehind
Dim url As String = "~/webapp.aspx"
ClientScript.RegisterStartupScript(Me.GetType(), "openwin", "<script>openPopUp2('" & url & "')</script>")
aspx
function openPopUp2(url) {
alert('hi');
window.open(url, "", " resizable=yes, menubar=no, toolbar=no, status=no, location=no, channelmode=yes");
}
I put the alert in there just to see if it was even hitting the javascript code and it is not... not sure what to try next.
thanks
Do you have masterpage in your solution?
put javascript code in aspx
and change
ClientScript.RegisterStart upScript(M e.GetType( ), "openwin", openPopUp2('" & url & "')")
and change
ClientScript.RegisterStart
ASKER
Not at this point of the application.
javascript
function OpenPopup(){window.open("' webapp.asp x?", "_blank", "height=500, width=575, left=150,top=150, " +"location=no, menubar=no, resizable=no, " +"scrollbars=no, titlebar=no, toolbar=no", true);}
ClientScript.RegisterStart upScript(M e.GetType( ), "openwin", "OpenPopup();",True)
function OpenPopup(){window.open("'
ClientScript.RegisterStart
prepare javascript
in aspx
function OpenPopup(){window.open("w ebapp.aspx ?", "_blank", "height=500, width=575, left=150,top=150, " +"location=no, menubar=no, resizable=no, " +"scrollbars=no, titlebar=no, toolbar=no", true);}
in aspx
function OpenPopup(){window.open("w
ASKER
None of those worked...
I've read a couple of blogs that talked about problems with session variables when opening popup windows.
If I use window.open to a page and then login from that window, I don't have an issue. But when I'm trying to login and use the window.open at same time I'm having the issue. Not sure if I'm on to something but I figured I'd throw it out there...
Again, I put an alert in the javascript code and it is not hitting the alert... just going to the logout page. Which it would do if the session had ended...
I've read a couple of blogs that talked about problems with session variables when opening popup windows.
If I use window.open to a page and then login from that window, I don't have an issue. But when I'm trying to login and use the window.open at same time I'm having the issue. Not sure if I'm on to something but I figured I'd throw it out there...
Again, I put an alert in the javascript code and it is not hitting the alert... just going to the logout page. Which it would do if the session had ended...
Look here:
Opening a PopUp new window with form authentication ticket
https://www.experts-exchange.com/questions/21751657/Opening-a-PopUp-new-window-with-form-authentication-ticket.html
Opening a PopUp new window with form authentication ticket
https://www.experts-exchange.com/questions/21751657/Opening-a-PopUp-new-window-with-form-authentication-ticket.html
ASKER
added FormsAuthentication.SetAut hCookie(sU serName, False)
and tried all the different ways... still not hitting the javascript. It's immediately going to the logout page.
and tried all the different ways... still not hitting the javascript. It's immediately going to the logout page.
please test
on The onClick attribute is
ButtonLogin.Attributes.Add ("onclick" , "javascript:window.open('Y our.aspx') ; return false;")
on The onClick attribute is
ButtonLogin.Attributes.Add
ButtonLogin.Attributes.Add ("onclick" , "javascript:window.open('Y our.aspx') ; return true;")
ASKER
did not work...
OK. Even if I put an alert directly in the ScriptManager.RegisterClie ntScriptBl ock or ClientScript.RegisterClien tScriptBlo ck it still does not fire.
ScriptManager.RegisterClie ntScriptBl ock(Page, GetType(Page), "OpenWindow", "<script>alert('Hello');</ script>", True)
I'm thinking this has to do more with authentication then anything else.
web.config
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="Logout.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfi le" />
</authentication>
The Logout.aspx page is what I keep getting when trying to use the javascript to open a new window.
Again, if I use response.redirect everything works... it just does not open in a new window. If I put a button on the first page and run the javascript on client side to open a new window and then from that new page (already a window) I login in then everything works fine. I'm just trying to avoid the additional page... Open the window from the login. It just seems that that as soon as I use the Clientscript or Scriptmanager it just goes straight to Logout.aspx.
It seems as if the web.config file is not recognizing the new session and sending the user straight to logout.aspx... I'm just throwing things out there hoping to get some ideas.
Thank you.
OK. Even if I put an alert directly in the ScriptManager.RegisterClie
ScriptManager.RegisterClie
I'm thinking this has to do more with authentication then anything else.
web.config
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="Logout.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfi
</authentication>
The Logout.aspx page is what I keep getting when trying to use the javascript to open a new window.
Again, if I use response.redirect everything works... it just does not open in a new window. If I put a button on the first page and run the javascript on client side to open a new window and then from that new page (already a window) I login in then everything works fine. I'm just trying to avoid the additional page... Open the window from the login. It just seems that that as soon as I use the Clientscript or Scriptmanager it just goes straight to Logout.aspx.
It seems as if the web.config file is not recognizing the new session and sending the user straight to logout.aspx... I'm just throwing things out there hoping to get some ideas.
Thank you.
Hi, I see some errors using the ScriptManager class in the posts above, please try this example:
This is the aspx file: OpenNewWindow.aspx
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
' Asuming that your user have valid credentials...
FormsAuthentication.SetAuthCookie("MyUserName", False)
' Then this will call your openPopUp2 javascript function when the page is loaded, so webapp.aspx will be open in a new window.
' Note that a popup blocker can block this action.
Dim myUrl As String = "webapp.aspx"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "openPopUp2", "openPopUp2('" + myUrl + "');", True)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function openPopUp2(url) {
window.open(url, "", "resizable=yes, menubar=no, toolbar=no, status=no, location=no, channelmode=yes");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Validate User" />
</div>
</form>
</body>
</html>
This is the aspx file: OpenNewWindow.aspx
ASKER
Still does not work.
Again, I am using the built in ASP authentication and login controls. The codebehind is being called by the asp:Login control. I'm wondering if since that is a server side control whether this can be done.
In this sub I actually check the users Role and send them to different pages based on those roles but I've removed all of that for readability.
Again, I am using the built in ASP authentication and login controls. The codebehind is being called by the asp:Login control. I'm wondering if since that is a server side control whether this can be done.
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false"
DisplayRememberMe="false" OnLoggedIn="loginRedirect" RememberMeSet="false" >
Protected Sub loginRedirect(ByVal sender As Object, ByVal e As EventArgs)
FormsAuthentication.SetAuthCookie(sUserName, False)
Dim url As String = "mywebapp.aspx"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "openPopUp2", "openPopUp2('" + url + "');", True) 'this goes straight to logout page
Response.Redirect(url) 'this works... just doesn't open a new window
End Sub
In this sub I actually check the users Role and send them to different pages based on those roles but I've removed all of that for readability.
Hi Buddy, your code look good, but why do you call Response.Redirect(url)???, based in your last post, what if you comment that line? try this:
Protected Sub loginRedirect(ByVal sender As Object, ByVal e As EventArgs)
FormsAuthentication.SetAuthCookie(sUserName, False)
Dim url As String = "mywebapp.aspx"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "openPopUp2", "openPopUp2('" + url + "');", True) 'this goes straight to logout page
End Sub
ASKER
@yv989c
I was just pointing out that the user DOES get authorized and that is not the problem because I can use Response.Redirect and it works fine.
I did try the code just as you have it and it goes straight to logout screen.
I was just pointing out that the user DOES get authorized and that is not the problem because I can use Response.Redirect and it works fine.
I did try the code just as you have it and it goes straight to logout screen.
ASKER
I have put an alert in the javascript also and that never gets hit... so, it's never running the javascript code.
Ok md0333, I will help you with that, let me do some tests...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.