Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > > >
Восстановить пароль Регистрация
 
kyjek
Новичок
1 / 1 / 0
Регистрация: 01.10.2011
Сообщений: 21
01.10.2011, 22:58     Открытие новой страницы в новой вкладке
  #1
Открываю новую страницу с помощью Response.Redirect, но предыдушая страница закрывается.
Что следует добавить в код чтобы новая стр открывалась в новой вкладке.

Код C#
1
2
3
4
protected void Button1_Click(object sender, EventArgs e)
{
  Response.Redirect(ResolveUrl("~/m.xml"));
}
AdAgent
Объявления
01.10.2011, 22:58
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2011, 22:58

Посмотрите здесь:

C# ASP.NET Возникли трудности с переходом к новой версии ASP.Net

C# ASP.NET GridView + DetailsView c 2я каскадными DropDownList (вставка новой записи)

C# ASP.NET Как настроить вид IE при открытии новой страницы из ASP?

C# ASP.NET Стандартный ID который бы при добавлении новой записи увеличивался бы на единицу автоматом.

C# ASP.NET Самоинициализация новой ASP сессии, такое возможно ?

C# ASP.NET Можно ли в АСП организовать запрос на создание новой таблицы для MS Access?

Alligieri
CEO
Эксперт C++
2234 / 1228 / 22
Регистрация: 16.03.2009
Сообщений: 3,583
02.10.2011, 07:04
  #2
kyjek, для элемента Button1
Код C#
1
OnClientClick="aspnetForm.target ='_blank';"
kyjek
Новичок
1 / 1 / 0
Регистрация: 01.10.2011
Сообщений: 21
02.10.2011, 11:01  [ТС]
  #3
Добавил строчку OnClientClick="aspnetForm.target ='_blank';" как я понял сюда:

Код C#
1
2
3
<asp:Button ID="Button1" runat="server" 
            OnClientClick="aspnetForm.target ='_blank';" Text="Button" 
            onclick="Button1_Click" />

Код в кнопке:
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
 
        }
 
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Redirect("WebForm2.aspx");
        }
    }

Выдает ошибку:
[ERORR]Ошибка выполнения Microsoft JScript: 'aspnetForm' - определение отсутствует[/ERORR]

Добавлено через 3 минуты
А все допер что вставить
Код C#
1
OnClientClick="form1.target ='_blank';"
kyjek
Новичок
1 / 1 / 0
Регистрация: 01.10.2011
Сообщений: 21
03.10.2011, 13:20  [ТС]
  #4
работает все хорошо.Но если на форме расположены 2или более кнопок, а в новом окне мне надо чтобы открывалось только по нажатию на одну. Т.е. проблема в том что после нажатия на кнопку с
Код C#
1
OnClientClick="form1.target ='_blank';" 
все кнопки открывают новые формы( такие же) как убрать этот эффект?
Alligieri
CEO
Эксперт C++
2234 / 1228 / 22
Регистрация: 16.03.2009
Сообщений: 3,583
03.10.2011, 13:41
  #5
kyjek, вы хотите все и сразу

Код JavaScript
1
2
3
4
5
6
7
8
9
10
<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> 
 
<body onload="fixform()"> 
ichgo
Форумчанин
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 168
12.02.2012, 10:06
  #6
Добрый день! А не подскажите что именно надо вводить вот сюда?

Код JavaScript
1
OnClientClick="form1.target ='_blank';" 
Я уже попробовал все варианты, и вписать название страницы, и id форму на странице
Хелп!
sau
Форумчанин
1085 / 1003 / 28
Регистрация: 22.07.2011
Сообщений: 2,780
12.02.2012, 12:16
  #7
Если у формы адрес выставлять то на любое событие отправки формы (для всех постбэк контролов) данные будут передаваться по указанному адресу.

Если только для одной конкретной кнопки то можно так :
Код HTML5
1
OnClientClick="window.open('WebForm2.aspx')"
Ну или так:
Код C#
1
2
3
4
5
protected void Button1_Click(object sender, EventArgs e)
{
  //тут может быть дополнительная логика обработки события
  ClientScript.RegisterStartupScript(this.GetType(), "window.open", "window.open('WebForm2.aspx')", true);
}
В общем вариантов много, какой удобнее зависит от задачи
ichgo
Форумчанин
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 168
15.02.2012, 10:07
  #8
Добрый день! К сожалению предложенные вами варианты не совсем удобно, вот как сейчас выглядит обработчик кнопки, по которой я должен открыть другую страницу
Код C#
1
2
3
4
5
6
7
8
9
10
11
        protected void button1_Click(object sender, EventArgs e)
        {
            DateTime forenddate = Convert.ToDateTime(calendar1.SelectedDate);
            string enddate = forenddate.ToShortDateString();
            string url;
            string zapfornewpage= "тут у меня запрос с параметром";
 
            url = "notmainpage.aspx?zapros=" + zapfornewpage;
 
            Response.Redirect(url);
        }
А вот так обрабатывается вторая страница

Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
    protected void Page_Load(object sender, EventArgs e)
    {
        Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection();
        string zap = Request.QueryString["zapros"];
        string cs = "тут коннект к БД";
        conn.ConnectionString = cs;
        conn.Open();
        Oracle.DataAccess.Client.OracleCommand zzzzzz = new Oracle.DataAccess.Client.OracleCommand(zap, conn);
        Oracle.DataAccess.Client.OracleDataReader rrr = zzzzzz.ExecuteReader();
        datagrid1.DataSource = rrr;
        datagrid1.DataBind();
        conn.Close();
}
Аналогично все обрабатывается на ура, страница формируется верно, но не в новом окне(вкладке)
а заменяет главную страницу,
в случае если я добавляю
Код HTML5
1
OnClientClick="window.open('WebForm2.aspx')"
При нажатии на кнопку, страница грузится в новом окне, но не передаются параметры на новую страницу, и я получаю ошибку

Посоветуйте как тут правильнее поступить, Спасибо!
sau
Форумчанин
1085 / 1003 / 28
Регистрация: 22.07.2011
Сообщений: 2,780
15.02.2012, 12:22
  #9
Код C#
1
2
3
4
5
6
7
8
9
10
11
protected void button1_Click(object sender, EventArgs e)
        {
            DateTime forenddate = Convert.ToDateTime(calendar1.SelectedDate);
            string enddate = forenddate.ToShortDateString();
            string url;
            string zapfornewpage= "тут у меня запрос с параметром";
 
            url = "notmainpage.aspx?zapros=" + zapfornewpage;
 
            ClientScript.RegisterStartupScript(this.GetType(), "window.open", "window.open(url)", true);
        }
А вообще не вижу большого смысла делать запрос лишь для формирования url по выбранной дате, это все можно на клиенте сделать и открыть новое окно.
ichgo
Форумчанин
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 168
15.02.2012, 13:19
  #10
Это сделано не для передачи даты, просто есть 1 страница, и в зависимости от того, по какой кнопке идет переход на неё, идут разные запросы и формируются разные таблицы.

Добавил
Код C#
1
ClientScript.RegisterStartupScript(this.GetType(), "window.open", "window.open(url)", true);
Теперь по нажатию на кнопку ничего не происходит, просто обновляет текущую страницу.
В чем может быть дело?

Заранее спасибо!
ichgo
Форумчанин
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 168
21.02.2012, 20:07
  #11
up, помогите

Добавлено через 42 минуты
ResolveUrl так же открывает страницу в текущей вкладке
sau
Форумчанин
1085 / 1003 / 28
Регистрация: 22.07.2011
Сообщений: 2,780
21.02.2012, 20:19
  #12
Ну включи мозг немного, почитай хоть доку по windows.open и по Page.ClientScript в msdn-е.
В примерах тебе уже все написали, там правда есть пару очепяток на "сообразительность" ).
antez
Новичок
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 11:56
  #13
У меня кнопка находится внутри updatepanel. Ни один из указанных способов не помогает, страница открывается в текущей вкладке.

ЗЫ Без updatepanel всё работает.
sau
Форумчанин
1085 / 1003 / 28
Регистрация: 22.07.2011
Сообщений: 2,780
25.03.2012, 12:40
  #14
Если в UpdatePanel-и, то нужно использовать методы ScriptManager-а:
Код C#
1
ScriptManager.RegisterStartupScript(this, this.GetType(), "window.open", script, true);
antez
Новичок
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 13:05
  #15
Да, теперь открывается в новой вкладке, но по умолчанию блокируется в браузерах, как всплывающее окно. Можно ли как-то избежать этой блокировки?
sau
Форумчанин
1085 / 1003 / 28
Регистрация: 22.07.2011
Сообщений: 2,780
25.03.2012, 13:14
  #16
Настройки браузера
antez
Новичок
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 13:57
  #17
Если не использовать UpdatePanel, и использовать это:

Цитата Сообщение от Alligieri Посмотреть сообщение
kyjek, для элемента Button1
Код C#
1
OnClientClick="aspnetForm.target ='_blank';"
то страница открывается в новой вкладке, как обычный переход по ссылке с target ='_blank', не блокируется, как всплывающее окно.

Можно ли достичь этого же эффекта при UpdatePanel?
sau
Форумчанин
1085 / 1003 / 28
Регистрация: 22.07.2011
Сообщений: 2,780
25.03.2012, 14:46
  #18
Разница в том что когда окно открывается скриптом, браузер блокирует его из соображений антиспама.
Ну как вариант можно создать скрытую ссылку, а потом скриптом кликнуть по ней, сам не проверял но думаю прокатит.
antez
Новичок
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 20:23
  #19
Использовал, как обычную ссылку, так и asp:HyperLink, но всё равно при использовании кода
Код C#
1
ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", "document.getElementById('H1').click();", true);
браузеры блокируют, как всплывающее окно
Монфрид
Форумчанин
859 / 745 / 56
Регистрация: 07.03.2012
Сообщений: 2,492
25.07.2012, 15:48     Открытие новой страницы в новой вкладке
  #20
а как в asp mvc сделать открытие страницы в новой вкладке?
Yandex
Объявления
25.07.2012, 15:48
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 16:27. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.