Как проверить, является ли страница обратной передачей в зарезервированной функции pageLoad на Ajax ASP.NET

Если вы все еще работаете в Swift 1.x

, попробуйте,

let testArray = ["A","B","C"]

let indexOfA = find(testArray, "A") 
let indexOfB = find(testArray, "B")
let indexOfC = find(testArray, "C")
10
задан Commercial Suicide 20 September 2017 в 22:31
поделиться

9 ответов

Одним путем Вы могли сделать, который должен обеспечить электричеством Приложение. Обработчик загрузок в Приложении. Init, затем имейте тот обработчик, развязывают себя после выполнения:

Sys.Application.add_init(AppInit);

function AppInit() {
  Sys.Application.add_load(RunOnce);
}

function RunOnce() {
  // This will only happen once per GET request to the page.

  Sys.Application.remove_load(RunOnce);
}

Это выполнится после Приложения. Init. Это должна быть последняя вещь, прежде чем pageLoad назовут.

6
ответ дан 3 December 2019 в 23:52
поделиться

То, что можно сделать, соединить проводом до события загрузки Sys. Класс приложений. можно затем использовать isPartialLoad свойство Sys. Класс ApplicationLoadEventArgs. Я полагаю, что это сообщило бы, находитесь ли Вы в асинхронной обратной передаче или нет.

Чтобы знать, находитесь ли Вы в сообщении назад, необходимо будет обработать это в серверном коде и испустить это клиенту.

2
ответ дан 3 December 2019 в 23:52
поделиться

@Darren: Спасибо за ответ. Я попытался создать pageLoad с аргументом события ApplicationLoadEventArgs как параметр (см. ниже). Однако согласно этому:

Событие загрузки генерируется для всех обратных передач к серверу, который включает асинхронные обратные передачи.

Как Вы указали, isPartialLoad свойство не покрывает все сценарии обратной передачи. Будет хорошо, если аргумент события также будет содержать isPostback свойство.

   function pageLoad(sender, arg) {
      if (!arg.get_isPartialLoad()) {
          //code to be executed only on the first load
      }
   }

@mmattax: я ищу свойство, которое можно назвать от клиентского (JavaScript).

3
ответ дан 3 December 2019 в 23:52
поделиться

У Вас мог быть скрытый вход, который Вы устанавливаете на известное значение на стороне сервера, если это - обратная передача/обратный вызов - и Ваш JavaScript мог бы проверить то значение.

Тем не менее я действительно надеюсь, что существует решение только для клиента для этого.

Править: @mmattax - я полагаю, что он ищет клиентское решение - JavaScript, эквивалентный из этого.

2
ответ дан 3 December 2019 в 23:52
поделиться

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

0
ответ дан 3 December 2019 в 23:52
поделиться

Можно все еще использовать Page. IsPostback во время асинхронного вызова.

0
ответ дан 3 December 2019 в 23:52
поделиться

@Dave Ward: Это обычно работало бы. Однако код должен присоединить событие на объекте поведения. Поскольку создание объекта поведения происходит во время Приложения. Init, присоединяя к тому событию приведет к непредсказуемому поведению.

Будет хорошо, если будет событие PostInit.

0
ответ дан 3 December 2019 в 23:52
поделиться

@Dave Ward: использование метода RunOnce работает отлично. Это решает мою проблему, не имея обходного решения для проверки сначала, существует ли обработчик уже прежде, чем присоединить к событию.

Я отмечу Ваш ответ как принятый ответ. Еще раз спасибо.

0
ответ дан 3 December 2019 в 23:52
поделиться

Вот наш Ajax, эквивалентный isPostback, который мы использовали некоторое время.

public static bool isAjaxRequest(System.Web.HttpRequest request)
    {//Checks to see if the request is an Ajax request
        if (request.ServerVariables["HTTP_X_MICROSOFTAJAX"] != null ||
            request.Form["__CALLBACKID"] != null)
            return true;
        else
            return false;
    }
0
ответ дан 3 December 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: