2012-01-24 5 views
6

Мне не обязательно использовать response.redirect, но это то, что у меня было. Я хотел бы открыть выбранную ссылку в новом окне. Как мне это сделать?Как использовать Target = _blank в response.redirect?

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

возможно дубликат: [http://stackoverflow.com/questions/104601/asp-net-response-redirect-to -new-window] – perfectionist

ответ

12

Вы не можете ответить на короткий вопрос. Браузер - единственное, что может открыть новое окно.

Что вы можете сделать, это отправить фрагмент html ответа, который имеет ссылку с вашим URL как href, target = "_ blank" и кусок javascript, загружающий форму, которая подделывает клик. Если это не работает, используйте window.open (url);

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

это не работает на моей странице. help – DharaPPatel

+0

Можете ли вы добавить код, чтобы показать, что вы делаете? –

4

Вы пытаетесь выполнить клиентскую задачу со стороны сервера, поэтому вам нужно немного взломать.

Один из вариантов отправляет обратно страницу, которая представляет собой лишь немного JavaScript, который затем будет обрабатывать перенаправление.

Это не особенно чистым, но что:

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

Как насчет блокировщиков всплывающих окон? – GlennG

+0

Это порождает ошибку потенциально опасного значения Request.Path от клиента – TheAlbear

1

Вы не можете сделать это с Response.Redirect()

Ну вы могли бы сделать это с помощью простой Javascript внутри Response.Write

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

Если я это правильно понимаю, вы хотите открыть перенаправленный URL-адрес в новом окне, но предположительно сохранить исходную цель в том же окно.

К сожалению, вы не можете этого сделать, потому что перенаправление обслуживается сервером, а не браузером. Вы могли бы перенаправить на страницу, содержащую некоторый скрипт, который открыл новое окно на основе параметра querystring URL. Но это откроет себя для XSS, если вы не будете осторожны.

0

Как насчет гиперссылки, которую вы программируете по-разному? Представьте себе это. asp hyperlink, что при нажатии открывается новое окно, возможно без полос прокрутки, нет адресной строки, ничего, что вы хотите. Вот пример:

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

Это просто альтернатива стандартной кнопке, которая иначе вызывала бы обработчик щелчка. Имейте в виду, вы можете добавить все это с фронта в качестве атрибута.

1

Если вы только обработка навигации вы можете попробовать ASP: гиперссылка контроль, а не кнопки, таким образом цель, указанная в браузере при отображении страницы:

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

Конечно, это более вежливый, чтобы уйти. Только та, потому что в этом случае гиперссылку можно щелкнуть правой кнопкой мыши, а «открыть на новой странице/вкладке» будет доступно из контекстного меню.

2

Используйте баттона OnClientClick свойство:

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

Я использую этот код для редиректа:

Response.Write ("окно.открытый ('http://www.whatever.com', '_ пустым') < "+"/скрипт> ");

Конечный тег должен быть отформатирован < "+"/ скрипт>

0

Я добавил в ответ @DaveWalker:

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

Это создаст всплывающее окно вместо того, чтобы открыть новую вкладку .

-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

попытайтесь написать ответ аккуратно, чтобы им было легко понять – Chella

0

Я видел много анверов, и никто не работает для меня. Поэтому я попробовал следующий код, и он решил мою проблему:

Сначала я сменил кнопку mt с помощью кнопки ссылки с тем же аспектом, что и кнопка.

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

После этого я добавлю следующее в свой код.

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

Это работает для меня

На код ASPX:

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