Quiero hacer un Response.Redirect("MyPage.aspx")
pero lo tengo abierto en una nueva ventana del navegador. He hecho esto antes sin usar el método de script de registro de JavaScript. Simplemente no puedo recordar cómo?Respuesta.Redirecta a la nueva ventana
Respuesta
Esto no es posible con Response.Redirect como ocurre en el lado del servidor y no puede dirigir su navegador para que realice esa acción. ¿Qué quedaría en la ventana inicial? Una página en blanco?
Como Response.Redirect se inicia en el servidor, no puede hacerlo utilizando eso.
Si usted puede escribir directamente a la respuesta fluvial podría intentar algo como:
response.write("<script>");
response.write("window.open('page.html','_blank')");
response.write("</script>");
Es posible que desee utilizar el Page.RegisterStartupScript para asegurar que los incendios de JavaScript al cargar la página.
me acaba de encontrar la respuesta y funciona :)
Es necesario añadir lo siguiente a su servidor de enlace del lado botón /:
OnClientClick="aspnetForm.target ='_blank';"
Todo mi código del botón se ve algo como:
<asp:LinkButton ID="myButton" runat="server" Text="Click Me!"
OnClick="myButton_Click"
OnClientClick="aspnetForm.target ='_blank';"/>
En el lado del servidor OnClick hago un Response.Redirect("MyPage.aspx");
y la página se abre en una nueva ventana.
La otra parte que debe agregar es corregir el destino del formulario; de lo contrario, cada enlace se abrirá en una nueva ventana. Para hacerlo, agregue lo siguiente en el encabezado de su ventana POPUP.
<script type="text/javascript">
function fixform() {
if (opener.document.getElementById("aspnetForm").target != "_blank") return;
opener.document.getElementById("aspnetForm").target = "";
opener.document.getElementById("aspnetForm").action = opener.location.href;
}
</script>
y
<body onload="fixform()">
¿funciona esto si Javascript está deshabilitado? –
No, ya que esto usa javascript para cambiar el destino del formulario. En cambio, la página se enviaría normalmente. –
Además, podría tener una violación de seguridad si desea redirigir a una página fuera de su directorio virtual. – Drejc
También se puede utilizar en el código atrás como esta manera
ClientScript.RegisterStartupScript(this.Page.GetType(), "",
"window.open('page.aspx','Graph','height=400,width=500');", true);
Esto funciona bien para mí y es básicamente la versión corta de la solución Abhishek Shrivastava anterior Sin embargo, hay un par de advertencias que debe tener en cuenta: primero, esto activará los bloqueadores de ventanas emergentes. En particular, no funcionará en absoluto en Safari 5.0 si el bloqueador de pop-ups está habilitado porque Safari no le solicita ventanas emergentes bloqueadas y no le permite hacer excepciones emergentes. En segundo lugar, Chrome ignora el argumento de la página para window.open. Así que incluso si usa 'window.open ('page.aspx', '_ blank');' aún lo abre en una nueva ventana con la barra de navegación deshabilitada y botones de navegación faltantes en lugar de una nueva pestaña. –
El truco fixform es limpio, pero:
Usted no puede tener acceso al código de lo que se carga en la nueva ventana.
Incluso si lo hace, depende de el hecho de que siempre se carga, error gratis.
Y usted está en función del hecho de que el usuario no haga clic en otro botón antes que la otra página para crear una ocasión para cargar y ejecutar fixform.
Yo sugeriría hacer esto en su lugar:
OnClientClick="aspnetForm.target ='_blank';setTimeout('fixform()', 500);"
Y pusieron fixform en la misma página , con este aspecto:
function fixform() {
document.getElementById("aspnetForm").target = '';
}
siempre uso este código .. Utilice este código
String clientScriptName = "ButtonClickScript";
Type clientScriptType = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager clientScript = Page.ClientScript;
// Check to see if the client script is already registered.
if (!clientScript.IsClientScriptBlockRegistered (clientScriptType, clientScriptName))
{
StringBuilder sb = new StringBuilder();
sb.Append ("<script type='text/javascript'>");
sb.Append ("window.open(' " + url + "')"); //URL = where you want to redirect.
sb.Append ("</script>");
clientScript.RegisterClientScriptBlock (clientScriptType, clientScriptName, sb.ToString());
}
¡Este código nunca afectará a la clase CSS, por lo que la ventana principal no se verá afectada en absoluto! –
Bueno, este ciertamente es un fuerte argumento para MVC. No quitar nada de tu código. Lejos de ahi. Son cosas como esta las que tipifican las formas web, blech. – MrBoJangles
Todo este código se puede condensar en una línea ... vea la solución de shalu a continuación. Es exactamente el mismo efecto, pero sin toda la hinchazón innecesaria. –
que pueda open new window from asp.net code behind usando ajax como lo hice aquí http://alexandershapovalov.com/open-new-window-from-code-behind-in-aspnet-68/
protected void Page_Load(object sender, EventArgs e)
{
Calendar1.SelectionChanged += CalendarSelectionChanged;
}
private void CalendarSelectionChanged(object sender, EventArgs e)
{
DateTime selectedDate = ((Calendar) sender).SelectedDate;
string url = "HistoryRates.aspx?date="
+ HttpUtility.UrlEncode(selectedDate.ToShortDateString());
ScriptManager.RegisterClientScriptBlock(this, GetType(),
"rates" + selectedDate, "openWindow('" + url + "');", true);
}
Usted puede utilizar esto como método de extensión
public static class ResponseHelper
{
public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures)
{
if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures))
{
response.Redirect(url);
}
else
{
Page page = (Page)HttpContext.Current.Handler;
if (page == null)
{
throw new InvalidOperationException("Cannot redirect to new window outside Page context.");
}
url = page.ResolveClientUrl(url);
string script;
if (!String.IsNullOrEmpty(windowFeatures))
{
script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
}
else
{
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);
}
}
}
Con esto se obtiene buen anulación en el objeto de respuesta real
Response.Redirect(redirectURL, "_blank", "menubar=0,scrollbars=1,width=780,height=900,top=10");
¿qué debo enviar para el primer arribo? – Raghuveera
¡Amigo, esta es una solución fantástica que realmente funciona! Gracias. –
¡Excelente solución reutilizable! El único inconveniente es el hecho de que la nueva ventana está bloqueada por el bloqueador de pop-ups. – MeanGreen
<asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry"
OnClick="btnNewEntry_Click" OnClientClick="aspnetForm.target ='_blank';"/>
protected void btnNewEntry_Click(object sender, EventArgs e)
{
Response.Redirect("New.aspx");
}
Fuente: http://dotnetchris.wordpress.com/2008/11/04/c-aspnet-responseredirect-open-into-new-window/
dice que aspnetForm no está definido. – Naresh
Éste trabajó para mí perfecto. :) –
Si puede reestructurar su código de manera que no es necesario para la devolución de datos, a continuación, puede utilizar este código en el evento PreRender del botón:
protected void MyButton_OnPreRender(object sender, EventArgs e)
{
string URL = "~/MyPage.aspx";
URL = Page.ResolveClientUrl(URL);
MyButton.OnClientClick = "window.open('" + URL + "'); return false;";
}
Contruct su URL a través de controlador de eventos click:
string strUrl = "/some/url/path" + myvar;
continuación:
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "window.open('" + strUrl + "','_blank')", true);
Bloqueador de ventanas emergentes bloquea la url cualquier otro wa alrededor de esto ?? – Rafay
window.open en este ejemplo siempre se tratará como un'popup 'ya que se inicia por código y no por una acción del usuario. si se llama a window.open cuando el usuario hace clic en un elemento, eso debería eludir la acción emergente bloqueada por el navegador. – steve
@steve, esta es una solución excelente y muy simple. Usé su enfoque de Response.Redirect a una ventana emergente. – Sunil
Aquí hay una versión de jQuery basada en la respuesta de @takrl y @tom anterior. Nota: no formid codificado (llamado aspnetForm arriba) y también no utiliza referencias form.target directas que Firefox puede encontrar problemática:
<asp:Button ID="btnSubmit" OnClientClick="openNewWin();" Text="Submit" OnClick="btn_OnClick" runat="server"/>
A continuación, en el archivo js que se hace referencia en la página MISMO:
function openNewWin() {
$('form').attr('target','_blank');
setTimeout('resetFormTarget()', 500);
}
function resetFormTarget(){
$('form').attr('target','');
}
Utilicé hipervínculo en lugar de LinkButton y funcionó bien, tiene la propiedad Target por lo que resolvió mi problema. Estaba la solución con Response.Write, pero eso estaba estropeando mi diseño, y el que tenía ScriptManager, en cada actualización o respaldo, volvía a abrir la ventana. Así es cómo lo resolví:
<asp:HyperLink CssClass="hlk11" ID="hlkLink" runat="server" Text='<%# Eval("LinkText") %>' Visible='<%# !(bool)Eval("IsDocument") %>' Target="_blank" NavigateUrl='<%# Eval("WebAddress") %>'></asp:HyperLink>
gracias, resolvió mi problema –
También puede utilizar el siguiente código para abrir nueva página en una nueva pestaña.
<asp:Button ID="Button1" runat="server" Text="Go"
OnClientClick="window.open('yourPage.aspx');return false;"
onclick="Button3_Click" />
Y simplemente llame a Response.Redirect ("yourPage.aspx"); detrás del evento del botón.
Este método desencadena tanto _OClienteCliente_ como _clicón_. Significa que se abre una página en la nueva ventana, así como algunas acciones se realizaron en la misma página –
Ninguno de los ejemplos anteriores funcionó para mí, así que decidí publicar mi solución. En el botón haga clic en eventos, aquí está el código detrás.
Dim URL As String = "http://www.google/?Search=" + txtExample.Text.ToString
URL = Page.ResolveClientUrl(URL)
btnSearch.OnClientClick = "window.open('" + URL + "'); return false;"
Estaba teniendo que modificar el código de respuesta de otra persona. Código directo para abrir en un nuevo navegador.
no funciona para safari – MobileMon
Utilicé este enfoque, no requiere que haga nada en la ventana emergente (a la que no tuve acceso porque estaba redireccionando a un archivo PDF). También usa clases.
$(function() {
//--- setup click event for elements that use a response.redirect in code behind but should open in a new window
$(".new-window").on("click", function() {
//--- change the form's target
$("#aspnetForm").prop("target", "_blank");
//--- change the target back after the window has opened
setTimeout(function() {
$("#aspnetForm").prop("target", "");
}, 1);
});
});
Para usar, agregue la clase "nueva ventana" a cualquier elemento. No necesita agregar nada a la etiqueta corporal. Esta función configura la nueva ventana y la arregla en la misma función.
método emergente le dan una pregunta segura para los visitantes ..
aquí es mi solución simple: everyhere y trabajo.
<script type="text/javascript">
function targetMeBlank() {
document.forms[0].target = "_blank";
}
</script>
<asp:linkbutton runat="server" ID="lnkbtn1" Text="target me to blank dude" OnClick="lnkbtn1_Click" OnClientClick="targetMeBlank();"/>
lo hice poniendo target = "_ blank" en el LinkButton
<asp:LinkButton ID="btn" runat="server" CausesValidation="false" Text="Print" Visible="false" target="_blank" />
luego en la pageload CodeBehind acaba de establecer el atributo href:
btn.Attributes("href") = String.Format(ResolveUrl("~/") + "test/TestForm.aspx?formId={0}", formId)
HTML
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" OnClientClick = "SetTarget();" />
Javascript:
function SetTarget() {
document.forms[0].target = "_blank";}
Y CodeBehind:
Response.Redirect(URL);
- 1. Agregar contenido a una nueva ventana abierta
- 2. Bookmarklet En ventana nueva
- 3. GWT Ventana emergente en la nueva ventana del navegador
- 4. Abrir la imagen en una nueva ventana
- 5. ASP.NET y sesiones: nueva instancia del navegador frente a la nueva ventana del navegador
- 6. Crear nueva ventana utilizando jquery
- 7. Android WebView Ventana nueva URL
- 8. Cómo vincular una imagen y apuntar a una nueva ventana
- 9. javascript para nueva pestaña (CTRL + T), nueva ventana (CTRL + N)?
- 10. Abrir página en una nueva ventana sin ventana emergente
- 11. Abrir una nueva ventana en silverlight
- 12. Google CSE abre en una nueva ventana
- 13. XNA con Windows Forms - Abriendo nueva ventana
- 14. ¿Cómo abro una nueva ventana usando jQuery?
- 15. Javascript: abrir nueva página en la misma ventana
- 16. cómo prevenir la reapertura de una nueva ventana con jQuery?
- 17. Abra la href mailto enlace en una nueva pestaña/ventana
- 18. Chrome> Visual Studio, la ventana nueva pestaña no
- 19. selenio, ¿cómo puedo seleccionar una nueva ventana
- 20. ¿Abrir el botón en una ventana nueva?
- 21. ¿Cómo detectar el botón Atrás y la nueva ventana?
- 22. System.Windows.Forms.WebBrowser abre vínculos en la misma ventana o en una nueva ventana con la misma sesión
- 23. Abrir respuesta en una nueva ventana
- 24. Eclipse: Abrir en una nueva ventana
- 25. programa no se detiene después nueva ventana
- 26. Adjuntar a la 'pantalla' sesión con la creación de una nueva ventana de pantalla
- 27. abrir una nueva ventana en a4j: commandButton
- 28. Copie la página web actual en una nueva ventana
- 29. Abre nueva ventana en la devolución de datos
- 30. HTML JavaScript para abrir una nueva ventana y cerrar la ventana actual
Este trabajo, pero entonces la página donde mi botón es conseguir de cambios, es como el CSS o DIVS están siendo afectados. – Etienne
. Esto funciona. Pero está afectando a mi página real. – Naresh
la nueva ventana aparece cada vez al ir y venir. – devXen