2012-01-24 98 views
6

No necesariamente tengo que usar response.redirect, pero eso es lo que tenía. Me gustaría abrir el enlace seleccionado en una nueva ventana. ¿Cómo puedo hacer eso?¿Cómo uso Target = _blank en un response.redirect?

context.Response.Redirect(ConfigurationManager.AppSettings["URL"] + ext); 
+2

posible duplicado: [http://stackoverflow.com/questions/104601/asp-net-response-redirect-to -new-window] – perfectionist

Respuesta

12

No se puede es la respuesta corta. El navegador es lo único que puede abrir una nueva ventana.

Lo que puede hacer es enviar un fragmento de html a la respuesta que tiene un enlace con su url como href, target = "_ blank" y un fragmento de javascript onload del formulario que simula un clic. Si esto no funciona, use un window.open (url);

response.write("<script>"); 
response.write("window.open('page.html','_blank')"); 
response.write("</script>"); 
+0

esto no funciona en mi página. por favor ayuda – DharaPPatel

+0

¿Puedes agregar un código para mostrar lo que estás haciendo? –

4

Está tratando de realizar una tarea del lado del servidor desde el lado del servidor, por lo que tendrá que hacer un poco de piratería.

Una opción es enviar de vuelta una página que es solo un poco de JavaScript, que luego se encargará de la redirección.

Esto no es particularmente limpia, pero ¿qué pasa:

Response.Write("<script>window.open('http://www.somesite.com/','_blank');</script>"); 
+1

¿Qué hay de los bloqueadores de ventanas emergentes? – GlennG

+0

Esto genera un error de un valor Request.Path potencialmente peligroso desde el cliente – TheAlbear

1

No se puede hacer eso con Response.Redirect()

Bueno, podrías hacer esto usando un simple Javascript dentro Response.Write

Response.Write("<script>window.open('page.html','_blank')</script>"); 
0

Si entiendo esto correctamente, quiere poder abrir la URL redirigida en una nueva ventana, pero presumiblemente retendrá el objetivo original en el mismo ventana.

Desafortunadamente no puede hacer esto, porque el redireccionamiento es servido por el servidor y no por el navegador. Podría redireccionar a una página que contenga alguna secuencia de comandos que abrió una nueva ventana en función de un parámetro URL querystring. Pero esto te abriría a XSS si no tienes cuidado.

0

¿Qué tal un hipervínculo que programa dinámicamente? Imagina esto. hipervínculo asp que cuando hace clic abre una nueva ventana, posiblemente sin barras de desplazamiento, sin barra de direcciones, nada que desee. Aquí hay un ejemplo:

hyperlink1.Attributes.Add("onclick", "window.open(http://www.mylink.com?sessionvar1=" + someValue + "',null,'height=251px, width=600px,status=no, resizable=no, scrollbars=no, toolbar=no,location=no,menubar=no ');"); 

Esto es solo una alternativa a un botón estándar que de lo contrario llamaría a un controlador de clics. Tenga en cuenta que puede agregar todo desde el frente como un atributo.

1

Si sólo están manejando la navegación se puede probar un ASP: el control de hipervínculo en lugar de un botón, de esa manera el destino se especifica para el navegador cuando la página se representa:

protected void Page_Load (object sender, EventArgs e) 
{ 
    lnkViewPage.NavigateURL = sURL; 
    lnkViewPage.Target = "_blank"; 
} 

Por supuesto, es más educado para irse .Target solo porque en este caso el hipervínculo podría hacer clic derecho y "abrir en nueva página/pestaña" estaría disponible desde el menú contextual.

2

Use OnClientClick la propiedad del botón:

<asp:Button runat="server" ID="cmd_Test" onclientclick="window.open('YourUrl')" /> 
0

Puedo usar este código para redirecciones:

Response.Write ("ventana.abierto ('http://www.whatever.com', '_ blank') < "+"/script> ");

La etiqueta final debe ser formateado < "+"/ script>

0

añadí a la respuesta @DaveWalker:

Response.Write("<script>") 
Response.Write("window.open('NewPage.aspx','_blank','resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,location=no')") 
Response.Write("</script>") 

Esto creará un emergente en lugar de abrir una nueva pestaña .

-1
SqlConnection con = new SqlConnection("Data Source=.; uid=sa; pwd=sandesh;database=BeautyJunction;"); 
     string strSQL = "Select BenificiaryType,BenificiaryName,DisttCode,IFSC,AC_No from BenificiaryMaster"; 
     SqlDataAdapter dt = new SqlDataAdapter(strSQL, con); 
     DataSet ds = new DataSet(); 
     dt.Fill(ds, "UserDetail"); 
     string dat = String.Format("{0: MM_dd_yyyy}", DateTime.Now); 
     //string dat = Convert.ToString(DateTime.UtcNow.ToShortDateString()); 
     sb.Append("~/Folder1/BenificiaryMaster_file_1" + dat + ".xml"); 
     string path = sb.ToString(); 
     ds.WriteXml(Server.MapPath(path)); 
     LabelMessage.Text = "Your XML file has Been created with name 'BenificiaryMaster_file_1" + dat +"' <a target='_blank' href=Folder1/BenificiaryMaster_file_1.xml>click here</a> to show Benificiary record file"; 
     //GridView1.DataBind(); 
+0

intenta escribir la respuesta cuidadosamente para que sea fácil para ellos entender – Chella

0

He visto muchas torres y nadie realmente funciona para mí. Así que probé el siguiente código y resolvió mi problema:

Primero cambié el botón mt por un botón de enlace con el mismo aspecto que un botón.

<asp:LinkButton ID="btPrint" runat="server" class="btn btn-primary"><span class="glyphicon glyphicon-print"></span> Print</asp:LinkButton> 

Después de esto añado lo siguiente en mi código.

btPrint.Attributes.Add("href", String.Format("printPage.aspx?&id={0}", txtId.Text)); 
btPrint.Attributes.Add("target", "_blank"); 
0

Esto funciona para mí

El código aspx:

<a id="myLink" target="_blank" onclick="window.open('ExamplePage.aspx, '_blank');">Link To A Page And Open Other Tab</a> 
Cuestiones relacionadas