2011-11-14 18 views
5

Sto memorizzando il nome e il cognome in due etichette nella pagina principale. Ho anche questi valori in una classe (la classe non fa molto ma li sto usando per l'espansione futura). Ho un controllo utente che invierà un'e-mail con nome e cognome come corpo.Passa valori dalla pagina al controllo utente

La mia domanda è: come posso trasferire valori etichetta o classe variabile nella variabile di corpo del controllo utente?

+0

In quale ambiente che usercontrol è creato? –

+0

Mi dispiace, sono nuovo di ASP.NET e C# cosa vuoi dire esattamente per ambiente? –

+0

Significa che l'usercontrol appartiene ad ajax? –

risposta

25

creare una proprietà sul controllo utente con il tipo di dati dei dati che si desidera passare ad esso, e popolare nella vostra pagina su creazione del controllo.

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

Più avanti nel codice dietro è possibile assegnare il valore come

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

Invece di questo si può passare il valore attraverso Markup similari

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

Grazie ... nessun errore e funzionante bene Apprezzo davvero –

2

È necessario creare proprietà sul controllo per mantenere questi valori; quindi dal codice della pagina, è sufficiente assegnare i valori alle proprietà nel controllo.

Sul controllo, è possibile avere qualcosa di simile

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

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

Fase 1: È possibile ex post i valori come proprietà e di quanto si può fare uso di tale facilmente.

Fase 2: Per accedere alla tua pagina dal controllo utente si può fare uso di Parent proprietà o può essere in qualche login custome per accedere alla pagina principale e di scrivere il codice di consumare il valore della proprietà.

+0

le nostre risposte si sono incontrate a metà :) – ViSu

0

si può fare qualcosa di simile nel controllo utente

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

e utilizzare la stringa x.

+0

ha provato che .. mi dà un errore Parola chiave 'questo' non è disponibile nel contesto corrente –

1

È necessario definire le proprietà pubbliche sul controllo e quindi quando si utilizza il controllo sulla pagina è possibile passare valori a tali parametri.

Qualcosa di simile:

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

in questo modo se ci sono solo pochi controlli per passare ma con codice numerico grande sarà disordinato non posso passare il valore in qualche altro modo? –

+0

Non sono sicuro di averlo capito. Perché è disordinato. Cosa intendi passare in altro modo? Importa la sintassi esatta di come lo passi? –

+0

No, voglio dire che scrivere una riga per ogni proprietà renderà il codice più lungo Sono ancora verde, quindi sto cercando di andare su un libro ..codice più lungo, più possibilità di errori –

Problemi correlati