Pregunta

Estoy agregando cuadros de texto (no un número fijo de cuadros de texto) dinámicamente a un formulario en la página ASP.NET, ¿cómo puedo leer los datos de estos cuadros de texto?

¿Fue útil?

Solución

Suponiendo que desea acceder a los controles en la devolución de datos, probablemente vuelva a crear los controles dinámicos exactamente como se crearon en la carga inicial, luego use el método FindControls de la página para encontrar los controles. Probablemente ayudaría crear los cuadros de texto con ID como Textbox1, Textbox2, etc.

Otros consejos

Mira Request.Params y extráelos desde allí. Por supuesto, tendrá que darles identificaciones para poder diferenciarlas.

De todas las aplicaciones ASP.NET con las que he trabajado, a .NET le gusta usar el siguiente algoritmo al generar la identificación para los controles del servidor:

ctl00$cphBody$[ControlID]

Intente usar este algoritmo cuando acceda a sus datos desde los cuadros de texto generados dinámicamente.

Cuando los agregue, debe darles nombres / ID, y puede usarlos para hacer referencia a ellos.

Si no es así, recorra su DOM en JavaScript para encontrarlos dentro del formulario que realizó; estarán en el mismo orden en que los insertó.

Por último, todos están disponibles como entradas para publicar / obtener en su página, por lo que debería poder verlos a todos siempre que les haya asignado diferentes nombres.

-Adam

Al crear cuadros de texto dinámicamente (presumiblemente usando JavaScript, pero lo mismo ocurre con los controles ASP.NET), déles nombres en un patrón específico. El que podrás reconocer más adelante.

En el lado del servidor, en cualquier caso, el controlador que ocurra después de Page_Init puede iterar a través de Colección Request.Form .

No se sienta tentado a usar Request.Param porque se puede usar para aplicar la falsificación de solicitudes entre sitios en su aplicación (un atacante podría atraer al usuario a emitir una solicitud GET que su aplicación interpretaría de la misma manera que interpretaría un POSTE uno, lo que generalmente no es bueno).

Si agrega controles ASP.NET dinámicos (en Page_Render, por ejemplo), también puede reconstruir controles y usar sus propiedades.

Puede usar FindControl y pasar la ID del cuadro de texto para obtener una instancia del cuadro de texto cuando se vuelva a publicar. La propiedad Text contiene los datos, dado que estamos en la etapa de carga de la página o más adelante en el ciclo. Al agregar controles dinámicos, anule el método CreateChildControls y agregue los controles dinámicos para controlar la jerarquía en esta etapa del ciclo.

Recuerde que en ASP.Net, cada devolución de datos es una nueva instancia de su clase. Si creó estos controles durante una devolución de datos anterior o en la primera vista, se recolectaron basura con el resto de esa instancia anterior. Por lo tanto, para usar los controles en esta nueva instancia, debe crearlos nuevamente. Si necesita que se cargue la información de estado para esos controles (incluido cualquier valor ingresado por el usuario), también debe crear antes de cargar el estado de vista, lo que significa que lo hace durante el evento Init, en lugar del cargar evento.

Para crear controles dinámicos, generalmente usaría un Control de PlaceHolder de ASP.NET y agregaría los controles dinámicos a este contenedor.

Le daría a cada control dinámico un ID.

Luego puede usar FindControl en PlaceHolder para acceder a los controles dinámicos.

Digo " controles dinámicos " para significar los controles que agrega en tiempo de ejecución

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