Различие между первой загрузкой страницы, обновлением, обратной отправкой и использованием сгенерированной ссылки

#c# #asp.net #refresh #postback #pageload

#c# #asp.net #обновить #обратная отправка #загрузка страницы

Вопрос:

Вводная информация

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

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

Мое веб-приложение позволяет пользователям выбирать на странице, которые определяют, какую информацию извлекать из базы данных, и отображать ее на странице. Пользователь также может устанавливать фильтры для компонентов, отображающих данные.


Требования

  • При первом посещении страницы на ней не должно быть никаких фильтров.
  • При обновлении страницы (например: F5) фильтры должны быть восстановлены.
  • Когда используется ссылка (сгенерированная из приложения), фильтры должны быть установлены таким же образом на связанной странице.
  • Когда post-back происходит a, фильтры должны оставаться неизменными.

Что я сделал

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

В основном я справлялся с этим в Page_Load функции.

 if (!IsPostBack){ // Happens on first page load, generated link, and page refresh
    if (Request.QueryString["gridLayout"] == null){ // Query strings are for link

        // Now check if first page load or page refresh
        // See if there are saved filters to load - yes means refresh
        if (this.Session["refreshStaticGridLayout"] != null amp;amp; 
            !(this.Session["refreshStaticGridLayout"].ToString().Equals(""))){
            // Load the filter settings
            MainGrid.LoadClientLayout(
                this.Session["refreshStaticGridLayout"].ToString()); 
        }
    }
}
  
  • Загрузка страницы по сгенерированной ссылке использует query strings — в основном, если было query string , то двигайтесь дальше.
  • Каждый раз, когда пользователь изменяет настройки фильтра, я устанавливаю Session переменную для их сохранения.

Вопрос

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


Редактировать

Меня не беспокоит Session истечение срока действия клиента.

Комментарии:

1. поправьте меня, если я ошибаюсь, но я считаю, что вы потеряете все переменные сеанса после истечения времени сеанса на сервере (если вы не изменили никаких настроек, тогда оно установлено на 20 минут). Допустим, ваш пользователь загрузил информацию, а затем пошел выпить чашку кофе, встретил кого-то, слишком долго разговаривал. Затем они возвращаются, и упс, все потеряно. конечно, это гипотетическая ситуация.

2. Хорошая мысль, спасибо за информацию, но мне не нужно беспокоиться об этом случае. Различные функции, выполненные другими до меня, также используют Session , поскольку они решили не беспокоиться о поддержке длительных периодов времени.