Как прочитать строку запроса только в первый раз?

#c# #asp.net #query-string

#c# #asp.net #запрос-строка

Вопрос:

У меня иерархическая структура, и когда пользователь нажимает Добавить дочернего элемента, я снова открываю ту же страницу с параметрами [Add, ParentID].

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

Примечание: я не могу использовать IsPostBack , потому что вызов выполняется с той же страницы, так что это «всегда true «.

Любая помощь!

Ответ №1:

Убедитесь, что вы обрабатываете строку запроса только тогда, когда страница не была отправлена обратно, используя IsPostBack свойство Page :

 if(!IsPostBack)
{
  //Process query string
}
  

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

1. @Jack — Если вы вызывали как Response.Redirect , IsPostBack будет false.

2. Большое вам спасибо. Я не использовал Response.Redirect . Я использовал PostBackURl , и он не выполнял обратную отправку. Теперь все в порядке. Спасибо.

Ответ №2:

 If (!Page.isPostBack) {

//read your query string here

}
  

Ответ №3:

в событии загрузки страницы или на вашей кнопке нажмите добавить это :

  If Not IsPostBack Then
        'your code here
    End If
  

C#

 if (!IsPostBack) {
//your code here
  

}

Использование сеанса

 if (Session("ok") == 0) {
//some code
Session("ok") = 1;}
  

это выполнит ваш запрос только при первой загрузке!!!

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

1. Это также в VB.NET , где вопрос помечен c #.

2. Вызов выполняется с первой страницы, поэтому IsPostBack всегда выполняется true

3. затем используйте сеанс для этого

Ответ №4:

в событии загрузки страницы

добавьте этот код и посмотрите, работает ли он

if ((!IsPostBack)amp;amp;(!IsCallBack)) {
//немного кода! }

Ответ №5:

 if(!IsPostBack)
{
  // Read the query string.
}