Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# под Web, ASP.NET

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 112, средняя оценка - 4.66
kyjek
2 / 2 / 0
Регистрация: 01.10.2011
Сообщений: 24
#1

Открытие новой страницы в новой вкладке - C# ASP.NET

01.10.2011, 22:58. Просмотров 14881. Ответов 19
Метки нет (Все метки)

Открываю новую страницу с помощью Response.Redirect, но предыдушая страница закрывается.
Что следует добавить в код чтобы новая стр открывалась в новой вкладке.

C#
1
2
3
4
protected void Button1_Click(object sender, EventArgs e)
{
  Response.Redirect(ResolveUrl("~/m.xml"));
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2011, 22:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Открытие новой страницы в новой вкладке (C# ASP.NET):

Открытие новой страницы - C# ASP.NET
Возможно ли написать ссыку на открытие новой страницы в только в Internet Explorer из любого браузера?

Как открыть форму в новой вкладке? - C# ASP.NET
Требуется из одной формы на нажатие кнопки открыть следующую форму в новой вкладке(хотя бы в той же), подскажите пожалуйста)

Как открыть сайт в новой вкладке - C# ASP.NET
Засунул в форму tabControl и поместил на него webBrowser, хочу что бы при нажатии по ссылке в открывшемся сайте, новая страница открывалась...

Генерация новой страницы HTML - C# ASP.NET
Есть форма: <form id="form1" runat="server"> <div class="one"> <p>Name of student</p> <input type="text"...

Добавление новой информации на верх страницы - C# ASP.NET
Как вообще реализуется добавление на верх страницы, вижу два пути: либо менять порядок записей в базе изначально, либо реализовать так,...

Как настроить вид IE при открытии новой страницы из ASP? - C# ASP.NET
Как настроить вид IE при открытии новой страницы из ASP, т.е. убрать строку состояния, адресную строку, кнопки и развернуть на полный...

19
Alligieri
CEO
Эксперт С++
2249 / 1238 / 24
Регистрация: 16.03.2009
Сообщений: 3,581
02.10.2011, 07:04 #2
kyjek, для элемента Button1
C#
1
OnClientClick="aspnetForm.target ='_blank';"
1
kyjek
2 / 2 / 0
Регистрация: 01.10.2011
Сообщений: 24
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';"
0
kyjek
2 / 2 / 0
Регистрация: 01.10.2011
Сообщений: 24
03.10.2011, 13:20  [ТС] #4
работает все хорошо.Но если на форме расположены 2или более кнопок, а в новом окне мне надо чтобы открывалось только по нажатию на одну. Т.е. проблема в том что после нажатия на кнопку с
C#
1
OnClientClick="form1.target ='_blank';"
все кнопки открывают новые формы( такие же) как убрать этот эффект?
0
Alligieri
CEO
Эксперт С++
2249 / 1238 / 24
Регистрация: 16.03.2009
Сообщений: 3,581
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()">
0
ichgo
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 183
12.02.2012, 10:06 #6
Добрый день! А не подскажите что именно надо вводить вот сюда?

Javascript
1
OnClientClick="form1.target ='_blank';"
Я уже попробовал все варианты, и вписать название страницы, и id форму на странице
Хелп!
0
sau
1592 / 1420 / 129
Регистрация: 22.07.2011
Сообщений: 5,328
Завершенные тесты: 1
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);
}
В общем вариантов много, какой удобнее зависит от задачи
0
ichgo
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 183
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')"
При нажатии на кнопку, страница грузится в новом окне, но не передаются параметры на новую страницу, и я получаю ошибку

Посоветуйте как тут правильнее поступить, Спасибо!
0
sau
1592 / 1420 / 129
Регистрация: 22.07.2011
Сообщений: 5,328
Завершенные тесты: 1
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 по выбранной дате, это все можно на клиенте сделать и открыть новое окно.
0
ichgo
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 183
15.02.2012, 13:19 #10
Это сделано не для передачи даты, просто есть 1 страница, и в зависимости от того, по какой кнопке идет переход на неё, идут разные запросы и формируются разные таблицы.

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

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

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

ЗЫ Без updatepanel всё работает.
0
sau
1592 / 1420 / 129
Регистрация: 22.07.2011
Сообщений: 5,328
Завершенные тесты: 1
25.03.2012, 12:40 #14
Если в UpdatePanel-и, то нужно использовать методы ScriptManager-а:
C#
1
ScriptManager.RegisterStartupScript(this, this.GetType(), "window.open", script, true);
1
antez
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 13:05 #15
Да, теперь открывается в новой вкладке, но по умолчанию блокируется в браузерах, как всплывающее окно. Можно ли как-то избежать этой блокировки?
0
25.03.2012, 13:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 13:05
Привет! Вот еще темы с ответами:

Progressbar открытие новой формы - C#
Здравствуйте,уважаемые...На первой форме кнопка и прогрессбар.При нажатии на кнопку открывается вторая форма (сами понимаете долго раз уж...

создание новой формы - C#
доброго времени суток не закидывайте помидорами, но я правда не нашла как это сделать надо создать новую форму по двойному щелчку по...

Проверка новой версии программы - C#
Всем привет, Есть некий код проверки новой версии программы. Помогите упростить код. И еще как можно приделать скачивание файла и...

Проверка новой версии на фтп - C#
Нужно сделать так: 1)запускаем программу,она автоматически проверяет версию файла на сервере. 2)Если версия меньше той которая у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.