Response.Rirectirect плохое семя или просто неправильно понял

2

Недавно я опубликовал ответ на вопрос, который, как я думал, был довольно простым. Вопрос касался проблем с жизненным циклом страницы в asp.net, где элементы отображали только изменения, сделанные после первой обратной передачи, поэтому я предложил использовать

Response.Redirect(Request.RawUrl)

И почти мгновенно проголосовали за это как (зачем вызывать другое путешествие в оба конца)

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

Это оригинальное сообщение Динамическое изменение пользовательского элемента управления в ASP.Net

  • 1
    Я думаю - на предыдущий вопрос и на этот - у вас есть ответы. RR не должен использоваться (из-за соображений ресурса и вводящего в заблуждение намерения), если перенаправление фактически не требуется. Решение, основанное на сеансах, которое предлагает Джоэл, или прямое извлечение из Запроса решают исходную проблему легко. (решение JS также работает, но ASP.NET не очень хорошо с ним работает)
Теги:

4 ответа

3
Лучший ответ

В Reponse.Redirect нет ничего неправильного. В большинстве случаев это не требуется в такой ситуации. Вы можете изменить способ построения страницы, работая с жизненным циклом, а не против него. Тогда нет необходимости в другой обратной передаче.

  • 0
    Я думаю, что первое утверждение должно быть более строго сформулировано: что-то не так с Response.Redirect, не используемым для перенаправления. Я не думаю, что это случай с лучшими техниками, поскольку это действительно неправильно.
1

Другим решением было бы использовать UpdatePanel с AutoPostBack DropDownList для переключения пользовательских элементов управления, тогда это отвечает только за переключение пользовательского элемента управления, и когда основная кнопка отправки (или другое событие) отправляет назад всю форму, вы может обрабатывать все данные.

UpdatePanels обновляют локальную страницу ViewState, если вы делаете это правильно.

1

Жизненный цикл страницы ASP.Net предоставляет множество возможностей для входа и настройки, поэтому я не вижу необходимости использовать Response.Redirect, чтобы клиент дважды загружал страницу.

Как и в стороне, использование Response.Redirect с помощью только одного аргумента может вызывать ThreadAbortException, поэтому часто лучше использовать перегрузку Response.Redirect(string url, bool endResponse), а второй аргумент - false. Это определенно относится к ASP.Net 1.0 и 1.1 (см. здесь), не уверен в 2.0.

0

Кажется, программирование по совпадению, но большая часть ASP.net - это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню