Pregunta

Entonces entiendo los conceptos básicos del patrón prg.Pero no he encontrado una técnica para hacer que datos arbitrarios estén disponibles para la instancia "obtener" de una página.

Por ejemplo, es posible que desee mostrar diferentes mensajes de comentarios al usuario según la acción que inició la devolución de datos.

Lo que he estado haciendo es enviar un identificador como parámetro de cadena de consulta.Esto funciona bien, pero introduce problemas de marcadores y no parece que se amplíe muy bien.¿Qué pasa si necesito enviar todo ViewState?

Desafortunadamente, estoy atado a WebForms en este momento y no he podido convencer a mi organización de migrar a mvc.

¿Fue útil?

Solución

Si los campos publicados son de persistencia antes de la redirección y hay que acceder a esos datos después de la redirección, me gustaría añadir el identificador para el registro (s) de datos en la cadena de consulta como usted menciona. También puede especificar un estado de la petición (para la visualización de mensajes, etc). A continuación, en la página Cómo se puede leer los datos y hacer todo con ella.

No veo ninguna otra manera de evitar esto, ya que cada página obtenida por GET no tendrá acceso a la página anterior ViewState etc.

El uso de Server.Transfer tendrá el mismo efecto que el manejo de la publique en la página original.

Se puede utilizar variables de sesión para almacenar los datos POST, pero que huele mal.

Otros consejos

Creo que aún puedes usar el método get en el elemento de formulario.En este caso no podrás utilizar el ID de tu control de forma normal.Pero puedes usar la colección Request.Params para obtener el estado de visualización.

Actualizar:Lo siento, lo intenté de nuevo.y descubrí que puede acceder al control de su servidor mediante su ID en el código subyacente.como:

Response.Write(text1.Text)

ver el ejemplo:

la página aspx (solo el elemento de formulario):

< form id="form1" runat="server" method="get">
< div>
< asp:TextBox ID="text1" runat="server" />
< asp:Button ID="button1" runat="server" OnClick="buttonClick" />
< div>
< form>

NOTA: Utilicé un espacio antes de cada" <" de lo contrario, el código anterior no será visible.

el código detrás de la página (solo evento de clic en el botón):

protected void buttonClick(object sender, EventArgs e)
    {
        string text = Request.Params["text1"];

        Response.Write(text);
    }

Al hacer clic en el botón, la URL se verá así:

http://localhost:1157/WebSite1/Default.aspx?__VIEWSTATE=%2FwEPDwUKMTkwNjc4NTIwMWRkoJEtEHZ8lHQ53QllSkz8ncpEw80%3D&__EVENTVALIDATION=%2FwEWAwKf%2BPPUCwKTjKGwCgKs34rGBvus9oxN%2FQkHlk zpKUEwrbxHLM6u&text1=ceniza&button1=

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