¿Cómo simular la devolución de datos en controles de usuario anidados?
-
03-07-2019 - |
Pregunta
Estoy haciendo una aplicación asp.net con una página. En esta página, tengo un control de usuario definido. Este control de usuario tiene un menú (tres botones) y 3 controles de usuario definidos también. Dependiendo del botón en el que se haya hecho clic, uno de los tres controles de usuario cambiará a verdadero o falso visible.
En estos tres controles de usuario tengo un botón y un mensaje, y quiero mostrar el mensaje "NO es devolución de datos" cuando se hace clic en el botón del menú, y cuando se hace clic en el botón de control del usuario, el mensaje será "¡SÍ, es devolución de datos!".
La pregunta es que usando la propiedad '' IsPostBack '' del control de usuario o de la página, el mensaje nunca será "NO es devolución de datos" debido al botón en el que se hizo clic en el menú para mostrar el control de usuario anidado.
Esta es la estructura de la página:
page
parent usercontrol
menu
nested usercontrol 1
message
button
nested usercontrol 2
nested usercontrol 3
Sé que se puede hacer usando ViewState pero, ¿hay una manera de simular la propiedad IsPostBack o saber cuándo es la verdadera devolución de datos de control de usuario?
Gracias.
Solución
Tengo la solución para este problema. Cuando un elemento se dispara, se envía un evento al servidor en la colección Request.Form, por lo que creé una propiedad en controles de usuario anidados que verifica si hay un control secundario (definido en el control de usuario) en la colección Request.Form:
public bool IsUserControlPostBack
{
get
{
foreach (Control c in Controls)
foreach(string key in Page.Request.Form.AllKeys)
if( c.ClientID == key.Replace('
Este código puede ser una propiedad del control de usuario o, si se llama muchas veces, una variable que se establece en el evento OnInit del control de usuario.
,'_'))
return true;
return false;
}
}
Este código puede ser una propiedad del control de usuario o, si se llama muchas veces, una variable que se establece en el evento OnInit del control de usuario.