ventana usuario una pasar pagina otra nueva net dinamico datos crear controles control como asp abrir c# asp.net-ajax communication ascx

usuario - menu dinamico asp net c#



Pase datos de una página ASP.NET a controles de usuario ASCX cargados dinámicamente (6)

Configurar propiedades públicas dentro de su control de usuario.

public string TestValue { get;set;};

Y luego cuando pones tu control de usuario en tu página aspx:

<uc1:UserControl ID="uc1" runat="server" TestValue="Testing" />

También puede cambiar los valores dentro de su código detrás:

uc1.testValue = "some value";

Estoy desarrollando una aplicación ASP.NET con C # y Ajax.

Tengo una página que contiene los controles de usuario cargados dinámicamente. Necesito pasar algunos datos (valores enteros y algunas cadenas) al control de usuario que se ha cargado dinámicamente .

Ahora utilizo Session para pasar estos valores, pero creo que puedo usar otra forma; algo como VIEWSTATE o entrada oculta.

¿Qué me recomiendas?

ACTUALIZAR:

El hecho de que cargue los controles dinámicamente es importante porque los controles se cargan en cada devolución de datos y no puedo almacenar ningún valor en los controles.


Cree una propiedad en su control de usuario con el tipo de datos de los datos que desea pasarle y rellénela en su página al crear el control.

public class myControl : Control { ... public int myIntValue {get; set;} ... }

En el código de atrás:

myControl ctrl = new myControl(); ctrl.myIntValue = 5;

También puede hacer esto directamente en el marcado:

<uc1:myControl ID="uc1" runat="server" myIntValue="5" />


Para responder realmente a tu pregunta, tanto como todos los demás parecen no querer que hagas esto, y estoy de acuerdo ... He hecho este tipo de cosas antes.

Lo primero que haría es hacer que su página implemente una interfaz.

En el control:

IVansFannelDataProviderPage provider = this.Page as IVansFannelDataProviderPage; if (provider != null) { //grab data from interface } else throw YouCantPutThisControlOnThisKindOfPageException();

No es la forma más elegante de hacerlo, pero cuando teníamos muchos controles que querían compartir un objeto muy costoso, esto se ajustaba perfectamente.

Esto funciona bien, pero hace que su control sea inutilizable en las páginas que no implementan la interfaz, y eso hace que los controles estén demasiado unidos a su página. Todos los demás que dicen que la página obtiene datos de los controles son correctos; pones controles en la página, no páginas en controles.

Debes tener una muy buena razón para hacerlo. Para nosotros: la carga del objeto compartido era muy costosa, y tener la página cargada / guardada sin importar qué control estaba trabajando en ese objeto fue bastante útil.

Era una lástima que muchas páginas que realmente no implementaban la interfaz tuvieran que ser calzadas para proporcionar algún tipo de soporte o proxy solo para que los controles funcionaran, e hicieron que las páginas y los controles fueran mucho menos reutilizables.

Si tuviera que hacer esto una vez más, haría que la página enviara datos a los controles con eventos, probablemente a través de la reflexión si necesitaba ser perezoso.


Puede establecer valores en la colección HttpContext.Items y leerlos en sus controles. Esto es como usar la sesión, excepto que solo está disponible por solicitud y no durante toda la vida de la sesión.

http://www.4guysfromrolla.com/articles/060904-1.aspx

En mi opinión, esto es un poco perezoso, pero podría ser una buena solución en algunas situaciones.



Tipo de derrotas el propósito de usar una IMO de control de ascx ya que esto rompe la encapsulación de control. Su página debe contener datos del control mediante la suscripción a eventos publicados por el control.