2009-11-30 3 views
3

У меня есть форма .aspx, в которой у меня есть объект выделения со списком, который я извлекаю из таблицы DB.asp.net: response.redirect не работает

Кнопка отправки, нажатие которой задает вопросы, связанные с этим предметом, в виде сетки.

Я делаю это, вызывая функцию FillGrid() в событии нажатия кнопки.

У меня также есть страница, которая меняет для моего gridview, в котором снова вызывается FillGrid().

В моей функции FillGrid() я использовал блок catch try. Если возникает ошибка, я хочу перенаправить страницу на страницу с ошибкой с помощью Response.Redirect(). Проблема в том, что этот response.redirect не работает. Одной из причин этого является то, что при нажатии кнопки форма публикуется дважды. Поскольку после достижения реакции response.redirect поток возвращается к нажатию кнопки, где вызывается FillGrid().

Как я могу это решить? Или просто сказать, как я могу предотвратить двойную публикацию формы?

+0

Это вызвано управлением внутри UpdatePanel? –

+0

no i m не использует Updatepanel ... – anay

ответ

0

Попробуйте это:

Response.Redirect("url"); 
Response.End; 
+0

Это поведение по умолчанию для Response.Redirect. –

+1

Response.Redirect («url», true) говорит то же самое. – Marc

0

Я считаю, что поведение, которое вы видите, это правильно. Отклик.редактора выполняется через браузер. Поэтому, когда вы получаете сообщение об ошибке, страница отправляется в браузер, и браузер запускает перенаправление. Переадресация заставляет page_load снова запускаться (это стандартный поток в ASP.NET).

Хотя вы можете использовать Server.Transfer, чтобы обойти это, я бы рекомендовал использовать перенаправление ошибок, встроенное в ASP.NET. См. this page для получения дополнительной информации о том, что доступно и как их использовать.

5

Например, вам необходимо указать index.aspx. Так вы пишете это:

Response.Redirect("index.aspx", true); 

Но Response.redirect не работает. Теперь перейдите в окно дизайна, выберите кнопку, которую вы хотите установить Response.redirect, и нажмите F4, который откроет Свойства кнопки, затем вы должны найти опцию PostBackUrl, а затем найдите свой URL-адрес, который вы хотите.

Смотреть это изображение:

1

я столкнулся точно такая же проблема. Переадресация не работала из-за ошибки в главной странице . Это пример кода:

FormsAuthentication.SetAuthCookie(loginUserDetail.UserName, false); 
Response.Redirect(FormsAuthentication.DefaultUrl, false); 

значение FormsAuthentication.DefaultUrl является "/membersarea/wellcome.aspx" и wellcome.aspx имеет главную страницу с именем, Site.Master.

У сайта SiteMaster были ошибки в JavaScript, поэтому команда Response.Redirect не работала.

2

Ну, это сделать ...

Response.Redirect("~/err.aspx", false); 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

Теперь исходная страница не будет размещена обратно в браузер, и вы будете перенаправлены на новую страницу .. Проблема Response.Redirect("~/err.aspx", true); в том, что исключение формируется таким образом, что может послать элемент управления в блоке поймать ..

• Другой способ, конечно, Server.Transfer(), но я не думаю, что ты хотел.

Смежные вопросы