2010-03-02 11 views

Respuesta

14

Puede usar ASP.NET AJAX incorporado.

Opción 1 - usar un servicio web (si desea que la funcionalidad sea reutilizable):

  • crear un servicio Web (.asmx) con el atributo [ScriptService],
  • añadir una a su página y agregue el servicio web a su colección de Servicios,
  • use el proxy de JavaScript generado por ScriptManager en su página.

Opción 2 - Métodos de página uso (si desea que la funcionalidad en una sola página sin crear un servicio web):

  • definen los métodos estáticos en su página, añadir [WebMethod] atribuir a ellos,
  • agregue un ScriptManager con EnablePageMethods = "true",
  • use el objeto PageMethods para llamar a estos métodos desde JavaScript.

En ambos casos, JSON se utilizará para la transferencia de datos.

Aquí hay una extensa tutorial con algunos ejemplos de código.

Sin embargo, a menudo se culpa a ASP.NET AJAX por su ineficiencia, por ejemplo, el JS que genera tiende a ser bastante grande. Entonces, si le preocupa el rendimiento, querrá probarlo a fondo.

También puede echar un vistazo a este tema: .NET AJAX Calls to ASMX or ASPX or ASHX?

+0

métodos página fue la solución. – ProfK

2

Use manipulador de web genérico. es decir, ashx. Estos son incluso más rápidos que las acciones MVC.

2
+0

En teoría, puede. Sin embargo, en el uso práctico, puede resolver el problema de bloqueo de sesión: cada solicitud desde la página de formulario web está asociada a la sesión del usuario de manera predeterminada, por lo que solo puede hacer solicitudes ajax una a una.Puede o no ser importante para su proyecto –

+1

Puede usar la sesión de solo lectura para la mayoría de las solicitudes y leer y escribir para iniciar sesión/cerrar sesión. Evita el problema de bloqueo. La sesión no está habilitada para la API web de manera predeterminada. Tengo que llamar al método desde Application_PostAuthorizeRequest: HttpContext.Current.SetSessionStateBehavior (SessionStateBehavior.ReadOnly); –

+0

Me preocupa, porque intentamos incluir un módulo API web en un formulario web heredado de ASP.NET. Es cierto que la API web no tiene sesión de forma predeterminada, pero cuando se combina con el formulario web, lo hace. Incluso podemos leer la información de la sesión desde la solicitud de la API. En el caso común, no es un problema, hasta que tengamos una pesada API llamada –

0

Mi método preferido en este escenario está utilizando un controlador genérico web (.ashx) y JSON.net http://james.newtonking.com/json

Es muy sencillo, rápido y ligero.

Un ejemplo sencillo sería:

public void ProcessRequest(HttpContext context) 
{ 
     string jsonOutput = string.Empty; 
     context.Response.ContentType = "application/json"; 
     using (var db = new MyDBContext()) 
     { 
      var dbResult = db.myobject.select(); 
      jsonOutput = Newtonsoft.Json.JsonConvert.SerializeObject(dbResult); 
     } 
     context.Response.Write(jsonOutput); 
} 
Cuestiones relacionadas