Cómo comprobar si la página es de devolución en función reservada a pageLoad en ASP.NET AJAX

StackOverflow https://stackoverflow.com/questions/40912

Pregunta

Estoy buscando una manera de comprobar dentro de pageLoad() si este método es recaudados durante el evento de carga debido a una devolución de datos/async devolución o porque de ser cargado y acceder a la primera vez.

Esto es similar a Page.IsPostback propiedad dentro de la página de código subyacente.

TIA, Ricky

¿Fue útil?

Solución

Una manera de hacerlo es conectar una Aplicación.Controlador carga en la Aplicación.Init, entonces tienen que controlador de separar a sí mismo después de la ejecución:

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);
}

Que se va a ejecutar después de la Aplicación.Init.Debe ser la última cosa antes de pageLoad se llama.

Otros consejos

@Darren:Gracias por la respuesta.Yo había tratado de crear pageLoad con el argumento de eventos ApplicationLoadEventArgs como parámetro (ver más abajo).Sin embargo, de acuerdo a este:

El evento de carga es elevado para todas las devoluciones de datos para el servidor, lo que incluye las devoluciones de datos asincrónicas.

Como usted ha indicado, la isPartialLoad propiedad no cubre todos devolución de los escenarios.Estaría muy bien si el argumento de eventos también contienen propiedad isPostback.

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

@mmattax:Estoy buscando una propiedad que puede ser llamado desde el lado del cliente (javascript).

Lo que puedes hacer es el alambre hasta el evento de carga de la Sys.Aplicación clase.usted puede utilizar el isPartialLoad propiedad de la Sys.ApplicationLoadEventArgs clase.Creo que le permiten saber si usted está en una devolución de datos asincrónica o no.

Para saber si usted está en un nuevo cargo, tendrá que manejar que en el lado del servidor de código y que emiten para el cliente.

Usted podría tener una entrada ocultos que se establece a un valor conocido en el lado del servidor si es una devolución de datos/devolución de llamada - y javascript puede comprobar que el valor.

Dicho esto, espero de verdad que no hay un sólo cliente, solución para esto.

Editar: @mmattax - creo que él está buscando una solución de cliente - el JavaScript equivalente.

Usted todavía puede usar la Página.IsPostback durante una llamada asincrónica.

Aplicación.Init es probablemente una de las más apropiado evento para utilizar, si usted sólo desea que el código se ejecute en la primera carga.

@Dave Ward:Normalmente esto sería el trabajo.Sin embargo, el código es para adjuntar evento sobre el comportamiento del objeto.Porque la creación de comportamiento de objetos que sucede durante la Aplicación.Init, adjuntando para que el evento se llevar a un comportamiento impredecible.

Será bueno si hay PostInit evento.

@Dave Ward:El uso de RunOnce método funciona a la perfección.Esta solucionar mi problema sin tener la solución para comprobar primero si el controlador ya existen antes de conectarlo a un evento.

Voy a marcar tu respuesta aceptado la respuesta.Gracias de nuevo.

Aquí está nuestra Ajax equivalente a isPostback que hemos estado usando durante un tiempo.

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;
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top