Ответ.Перенаправление ведет себя иначе, чем в UpdatePanel


Везде в моем веб-приложении я использую такие редиректы:

Response.Redirect("~/SearchResults.aspx", true); 
И это всегда приводит меня к нужной странице. http://localhost/myapp/SearchResults.aspx

Но теперь я делаю это в событии onclick кнопки, которая находится в ASP.NET UpdatePanel и он пытается привести меня по следующему адресу: http://localhost/myapp/%2fmyapp%2fSearchResults.aspx

У кого-нибудь есть идея, как это исправить?
4 2

4 ответа:

Наконец я нашел реальный ответ на эту проблему. Оказалось, что это было не то исправление, которое я опубликовал раньше. Хотя это был хороший обходной путь в то время, реальная проблема заключалась в том, что CMS, в которой я работаю, приносит устаревшую версию MicrosoftAjaxWebForms.js . Обновлять этот сценарий, решить все мои асинхронной обратной передачи-перенаправление проблемы.

Ниже приведен обходной путь в случае, если вам просто нужна кнопка, которая делает полную обратную передачу и перенаправление из обновления панель.

<asp:PostBackTrigger ControlID="btnRedirectButton" /> 

Я не думаю, что это поддерживается по умолчанию без опции 2 в блоге ниже. Однако есть несколько решений.

Http://aspdotnetcodebook.blogspot.com/2008/03/using-responseredirect-in-aspnet-ajax.html

Также я читал, что вы можете поместить туда кнопку, окруженную элементом , и в вашем button_click сделать перенаправление, но никогда не пробовал этого метод:

Http://www.freejobsreference.com/dotnetforums/210-Response-Redirect-not-working-error-if-button-is-inside-Update-Panel.aspx

Ответ.Редирект должен работать в панели обновления, это одно из известных исключений.

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

   <httpModules>
       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>

Я не использую ASP.Net ajax больше нет, и я нахожусь на своем Mac, поэтому я не могу проверить, правильная это версия или нет, но это должно, надеюсь, поставить вас на правильный путь.

Edit: эта ссылка имеет 2 других возможных варианта решения:

Http://aspdotnetcodebook.blogspot.com/2008/03/using-responseredirect-in-aspnet-ajax.html

Я пробовал все вышеперечисленные предложения, но безуспешно. Проблема все еще существует, так что теперь я обошел ее, взяв кнопку, которая делает перенаправление из панели обновления. Подумав об этом некоторое время, я пришел к выводу, что это самое логичное место и для кнопки, потому что она вызывает не обновление панели, а обновление всей страницы.