#c# #javascript #jquery #asp.net
#c# #javascript #jquery #asp.net
Вопрос:
Я вызываю это в своем коде за:
(test.aspx)
Response.Redirect("~/Default.aspx");
Я хочу включить оповещение javascript после / перед перенаправлением на Default.aspx, возможно ли это?
Я делаю это, потому что я передаю значение на другую страницу (test.aspx), и эта страница проверяет базу данных, если reader HasRow(), затем перенаправляет на Default.aspx.
Ответ №1:
Способ сделать это — отобразить оповещение с помощью javascript, а затем выполнить перенаправление также с помощью javascript:
ScriptManager.RegisterStartupScript(this,this.GetType(),"Redit","alert('asdf'); window.location='" Request.ApplicationPath "Default.aspx';",true);
Комментарии:
1. Извините, забыл поставить апостроф ‘ там, где вы назначаете окно. местоположение, взгляните на изменение в ответе
2. Так и должно быть, я только что протестировал это на своей стороне, и это работает, пожалуйста, не могли бы вы вставить свой код, чтобы увидеть, почему это не работает.
3. используя (SqlDataReader dr = cmd. ExecuteReader()) { if (dr.HasRows) { while (dr.Read()) { buList.Add(dr[0]. toString()); } } else { // Ответ. Перенаправление («~/Default.aspx»); ScriptManager. RegisterStartupScript(это, this. GetType(), «Redit», «alert(‘asdf’); окно. местоположение ='» запрос. ApplicationPath «Default.aspx’;», true); } }
4. Вы убедились, что он переходит к этой строке? Кроме того, включен ли javascript в вашем браузере?
5. Я также протестировал ваш код на своей стороне, и он должен работать, пожалуйста, убедитесь, что он действительно выполняет строку, т. Е. что ваш dr не возвращает никаких строк, так что он перейдет к оператору else
Ответ №2:
Давайте посмотрим, что происходит при вызове response.redirect()
- Серверы отправляют HTTP-ответ 302 в браузер, включая URL-адрес для перехода
- браузер не отображает содержимое ответа, а вместо этого получает содержимое с указанного URL
- если запрос на новый URL выполнен успешно, то он отображается.
Теперь, глядя на это, мы можем сделать вывод, что невозможно указать браузеру выполнить оповещение () с страницы, которая выдает перенаправление, потому что ее содержимое (если таковое имеется) отбрасывается.
Можно выполнить то, что вы хотите, со страницы, на которую вы перенаправляетесь. Для этого просто проверьте запрос.UrlReferrer, чтобы проверить, были ли вы перенаправлены с правильной страницы, затем отобразите оповещение при необходимости.
пример:
- Страница 1 перенаправляет на страницу 2
- Страница 2 проверяет, есть ли запрос.UrlReferrer равен странице 1
- Если значение равно, выводится оповещение
- Если нет, не делайте ничего особенного
Другой подход заключается в том, чтобы сначала создать оповещение, а затем выполнить перенаправление с javascript. окно.Расположение.href = newurl.
Комментарии:
1. спасибо за информацию, приятель. как мне вызвать javascript из исходного кода?
2. @Pod Вы могли бы использовать страницу. RegisterStartupScript() . принимает два строковых параметра. первый — это просто уникальный идентификатор, второй — ваш скрипт.
Ответ №3:
если у вас есть сообщение display something на странице Defaul.aspx, вы должны объявить это. Потому что, когда вы используете перенаправление, ваша страница отображается сверху. Вы должны установить перед перенаправлением состояние сеанса для флага something, а на странице Default.aspx вы должны вставить раздел, который был добавлен, когда было установлено это состояние сеанса.