Pregunta

Quiero recrear la devolución del panel de actualización sin usar un panel de actualización para realizar la devolución. ¿Cuál es el método genérico para hacer esto?

Por ejemplo, en Stackoverflow, cuando votas arriba o abajo sobre una pregunta, se hace una devolución de datos para actualizar la base de datos y apostaría a que no usaron un panel de actualización.

¿Qué tengo?

Tengo una tabla con datos de la tabla. Cuando hago clic en el elemento td como una columna completa, quiero hacer una actualización de la base de datos y también actualizar una vista de cuadrícula en la propia página. La vista de cuadrícula muestra todos los elementos actualmente seleccionados en la tabla porque se actualizó a través de " nuestro método " ;.

Buscando un buen método genérico que podría usar para muchas devoluciones asíncronas sin el panel de actualización.

¿Fue útil?

Solución

La forma en que funciona el Desbordamiento de pila se diferencia de dos maneras importantes de ese artículo de CodeProject.

  • Stack Overflow está realizando su solicitud AJAX contra una acción del controlador MVC de ASP.NET, no una página ASPX independiente. Puede considerar esto como el análogo de MVC de un método de página ASP.NET AJAX. En ambos casos, el método ASPX se quedará atrás en términos de rendimiento.

  • La solicitud AJAX de Stack Overflow devuelve un resultado serializado JSON, no texto simple arbitrario o HTML. Esto hace que el manejo en el lado del cliente sea más estandarizado y generalmente más limpio.

Por ejemplo: cuando voté esta pregunta, se realizó una solicitud XmlHttpRequest a / questiones / 171000 / vote, con un " voteTypeId " de 2 en los datos POST.

El controlador que manejó la solicitud agregó mi voto a una tabla en algún lugar y luego respondió con este JSON:

{"Success":true,"NewScore":1,"Message":"","LastVoteTypeId":2}

Usando esa información, este JavaScript se encarga de actualizar la pantalla del lado del cliente:

var voteResult = function(jClicked, postId, data) {
  if (data.Success) {
    jClicked.parent().find("span.vote-count-post").text(data.NewScore);
    if (data.Message)
      showFadingNotification(jClicked, data.Message);
  }
  else {
    showNotification(jClicked, data.Message);
    reset(jClicked, jClicked);

    if (data.LastVoteTypeId) {
      selectPreviousVote(jClicked, data.LastVoteTypeId);
    }
  }
};

Si estás usando WebForms, el ejemplo de los métodos de página de llamadas que encontraste en mi blog está definitivamente en el lugar adecuado.

Sin embargo, le sugiero que considere un servicio web para cualquier funcionalidad centralizada (como este ejemplo de votación), en lugar de los métodos de página. Los métodos de página parecen ser un poco más fáciles de escribir, pero también tienen algunos inconvenientes de reutilización y tienden a proporcionar una ilusión de seguridad adicional que realmente no existe.

Este es un ejemplo de cómo hacer lo mismo que encontraste, pero con servicios web (los comentarios en esta publicación realmente condujeron a la publicación que encontraste):

http: // encosia .com / 2008/03/27 / using-jquery-to-consume-aspnet-json-web-services /

Otros consejos

Puede usar una llamada AJAX estándar para lograr esto. Cree una página .aspx que actualice la base de datos en su método Page_Load, y muestre la información deseada (como el valor actual de la base de datos después de la actualización) como XML. Luego haga una llamada AJAX a esa página usando jQuery.

También puede devolver un fragmento HTML (es decir, un GridView actualizado), y usar jQuery para insertar el HTML actualizado en la página actual.

Editar: El ejemplo 2 de esta página debe estar muy cerca de lo que desea:
http://www.codeproject.com/KB/ajax/AjaxJQuerySample.aspx

Este enlace es lo que encontré que es lo mejor que puedo hacer y me permite usar javascript y métodos web.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top