¿Hay alguna manera de modificar cadenas de consulta sin romper una devolución de datos de ASP.Net?

votos
1

Al leer aquí y alrededor de la red, estoy cerca de asumir que la respuesta es no, pero ...

Digamos que tengo una página ASP.Net que a veces tiene un parámetro de cadena de consulta. Si la página tiene el parámetro de cadena de consulta, quiero quitarlo antes, durante o después de la devolución. La página ya tiene una gran cantidad de secuencias de comandos del lado del cliente (JavaScript puro y jQuery).

Como ejemplo, digamos que cargo:

http://myPage.aspx?QS=ABC

El parámetro QS es necesario para controlar lo que aparece en la página cuando se carga por primera vez y lo establece la página que lo llama. myPage.aspxtiene elementos de formulario que deben completarse y tiene un botón de enviar que hace una devolución de datos. Cuando la página completa la devolución de datos, necesito que la URL devuelta sea:

http://myPage.aspx

para evitar el código del lado del cliente que se llama cuando la cadena de consulta está presente. En otras palabras, después de un envío, no quiero que se activen las acciones del lado del cliente asociadas con el parámetro de cadena de consulta. Sé que podría adjuntar los contenidos del formulario a la URL como parámetros de cadena de consulta y solo redireccionar a la nueva URL y evitar el envío / devolución, pero eso requerirá mucha más comprobación de tipo en el código para evitar datos falsos y falsificaciones ocasionales. Supuse que también podría establecer un campo oculto en el código subyacente y mirarlo junto con la cadena de consulta para cancelar el comportamiento del lado del cliente si vuelvo de la devolución de datos, pero eso aún deja la cadena de búsqueda intacta básicamente para siempre y quiero para deshacerse de él después de la carga de la página inicial.

¿Alguna idea o mejores prácticas?

PD: ¿Hay algo que pueda hacer con la propiedad Form.Action que no romperá el comportamiento de la devolución de datos?

Publicado el 09/12/2008 a las 16:44
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
2

Yo usaría un HTTPModule para interceptar y reescribir la URL y la consulta tal como entró. No soy 100%, pero no creo que esto tenga ningún impacto con viewstate.

Suena (y se ve) complejo, pero en realidad es bastante trivial y está abierto a una tonelada de refinamiento y extensión (según .NET en general).

Respondida el 09/12/2008 a las 17:42
fuente por usuario

votos
1

IAM no estoy seguro de que esto sea lo que estás buscando, pero si lo entiendes bien, podrías hacer esto:

-en la verificación de carga de página para el valor de QS, si no está allí, use un campo de entrada oculto.

- La primera vez que carga la página con QS, realiza el procesamiento normal y almacena el valor de QS en un campo de entrada oculto.

-si no QS, entonces use el valor de entrada oculto

-después de la devolución de datos, puede redireccionar a la misma página, en ese punto puede usar Request.Form [] para recuperar el campo de entrada oculto, aún cargar los datos correctamente pero deshacerse de QS.

tenía sentido en mi cabeza, no estoy seguro de que tenga sentido ahora, pero te dejaré decidir.

Respondida el 09/12/2008 a las 17:34
fuente por usuario

votos
1

Probablemente sea una mala práctica, pero en esos casos (y los que solo necesito 'reiniciar' la página), simplemente respondo. Redirija a la misma página.

Respondida el 09/12/2008 a las 16:47
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more