2011-11-14 15 views
5

Estoy almacenando nombre y apellido en dos etiquetas en la página principal. También tengo esos valores en una clase (la clase no hace mucho, pero los estoy usando para futuras expansiones). Tengo un control de usuario que enviará un correo electrónico con el nombre y el apellido como cuerpo.Pase los valores de la página al control del usuario

Mi pregunta es, ¿cómo puedo transferir valores de variable de clase o etiqueta a la variable de cuerpo del control de usuario?

+0

En qué entorno que usercontrol es ¿creado? –

+0

Lo siento, soy nuevo en ASP.NET y C# ¿qué quiere decir exactamente por medio ambiente? –

+0

Significa si el control de usuario pertenece a ajax? –

Respuesta

25

crear una propiedad en el control de usuario con el tipo de datos de los datos que desea pasar a él, y lo pueblan en su página en la creación del control.

public class myUserControl : Control 
    { 
     ... 
     public int myIntProperty {get; set;} 
     ... 
    } 

Más tarde esto en el código subyacente puede asignar el valor como

myUserControl cntrl = new myUserControl(); 
    cntrl.myIntProperty = 5; 

En lugar de esto, puede pasar el valor a través de marcado también como

<uc1:myUserControl ID="uc1" runat="server" myIntProperty="5" /> 
+0

Gracias ... no hay error y funciona bien Realmente lo aprecio –

2

Necesita crear propiedades en su control para mantener estos valores; luego, desde el código de la página, simplemente asigne los valores a las propiedades en el control.

En su control, puede tener algo como

public string FirstName 
{ 
    get { 
    if (ViewState["FirstName"] == null) 
     return string.Empty; 
    return ViewState["FirstName"].ToString(); 

     } 
     set { 
      ViewState["FirstName"] = value; 
     } 
} 
1

Paso 1: Puede posteriori los valores como la propiedad y de lo que puede hacer uso de esa facilidad.

Paso 2: para acceder a su página desde el control de usuario puede hacer uso de Parent propiedad o puede haber alguna sesión atención al cliente al acceder a la página principal y que el código de escritura para consumir el valor de la propiedad.

+0

respondieron nuestras respuestas a la mitad :) – ViSu

0

se puede hacer algo como esto en el control de usuario

string x=((yourparentcontrol)this.parent).label1.text; 

y utilizar la cadena x.

+0

lo intenté ... me da un error La palabra clave 'esto' no está disponible en el contexto actual –

1

Debe definir propiedades públicas en el control y luego, cuando usa el control en la página, puede pasar valores a esos parámetros.

Algo así como:

<cc:mycustomControl runat="server" 
    MyProperty1=<%# label1 %> 
    MyProperty2=<%# label2 %> 
/> 
+0

de esta manera si está bien cuando solo hay dos controles para pasar pero con código de número grande será complicado ¿puedo pasar el valor de alguna otra manera? –

+0

No estoy seguro de obtenerlo. Por qué es desordenado ¿Qué quieres decir con pasar de otra manera? ¿Importa la sintaxis exacta de cómo lo pasas? –

+0

No, me refiero a que escribir una línea para cada propiedad hará que el código sea más largo Todavía estoy verde, así que estoy tratando de ir por el libro.código más largo, más posibilidades de errores –

Cuestiones relacionadas