Pregunta

Hola, esto puede parecer una pregunta extraña, pero aquí está mi situación:

Tengo un formulario donde el usuario puede hacer clic y agregar filas que contienen ciertos campos de entrada. Esto se hace estrictamente en el lado del cliente usando JQuery. Puedo acceder a los valores de entrada en la devolución de datos en el lado asp.net usando Request.Form y el nombre de los campos, lo cual está bien. El problema es que cuando la página se vuelve a publicar, los campos obviamente desaparecen. Así que no tengo forma de validar errores u otras cosas. ¿Cuáles son mis posibles soluciones aquí? ¿Debo generar dinámicamente los campos correspondientes en el lado del servidor cuando se produce la devolución de datos y poner los valores ya leídos en los campos generados en el lado del cliente para que sea transparente para los usuarios? ¿Es una ronda sobre la forma de hacer las cosas? ¿Hay una mejor manera?

Estaba pensando en agregar un método ajax en el lado del servidor que devolvería la información de validación y podría usarlo para señalar errores o lo que no está en el lado del cliente sin volver a publicar, pero el botón que causa la devolución es el " siguiente " botón, y lo necesito para ir a la página siguiente si no hay errores.

Estoy buscando más ideas que alguien pueda tener y los pros y los contras de los enfoques.

Gracias

¿Fue útil?

Solución

Si desea agregar campos de entrada dinámicamente, tendrá que mantener un hash del lado del servidor de los campos recién agregados y volver a instanciarlos en Page_Init para que puedan persistir entre las devoluciones.

Creo que tu idea de AJAX es buena:

  1. llame a un método del lado del servidor a través de jQuery (este puede ser un método estático en su página .aspx). El método del lado del servidor agrega un valor de cadena a un List<String> almacenado en la sesión.
  2. Haga que el método devuelva el valor de cadena, que es la ID del elemento que se agregará a la página.
  3. Agregue los elementos a su página con jQuery.
  4. Use la variable de sesión para restablecer sus campos agregados dinámicamente en la devolución de datos.

Este método le brinda la velocidad de agregar los campos en el lado del cliente y evita que sus campos dinámicos desaparezcan en la devolución de datos.

Otros consejos

1) Rápido y sucio, podría usar un UpdatePanel, pero eso aumentaría un poco el tamaño del tráfico. Le permitiría incluir controles de validación al volver a publicar todo el marcado de la tabla.

2) Podría usar algún tipo de CustomValidator o método de validación personalizado y simplemente usar los valores Request.Form. Siempre y cuando tenga alguna forma de identificar los campos, debería poder resolverlo, pero tendrá que recrear la escena si falla la devolución de datos, ya que perderá esas partes.

3) Podría hacer todo " devolución de datos " a través de una llamada WebMethod y manejar todo manualmente. Esta es probablemente la forma más limpia de hacerlo, ya que de todos modos está mezclando y combinando las cosas tradicionales de WebForms con un modelo más cliente.

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