2011-11-14 9 views
5

Przechowuję nazwisko i nazwisko w dwóch etykietach na stronie głównej. Te wartości mam również w klasie (klasa robi niewiele, ale używam ich do przyszłej rozbudowy). Mam kontrolę użytkownika, która wyśle ​​wiadomość e-mail z imieniem i nazwiskiem jako treścią.Przekaż wartości od strony do kontroli użytkownika

Moje pytanie brzmi, w jaki sposób mogę przenieść wartości zmiennych etykiety lub klasy do zmiennej ciała kontrolki użytkownika?

+0

W takim środowisku, że usercontrol jest stworzony? –

+0

Przykro mi, jestem nowy w ASP.NET i C# co dokładnie rozumiesz przez środowisko? –

+0

To znaczy, czy kontrolka użytkownika należy do ajax? –

Odpowiedz

25

Tworzenie nieruchomości na kontroli użytkownika z typów danych o danych, które chcesz przekazać do niego i wypełnić go na swojej stronie na stworzeniu kontrolą.

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

Później to w kodzie tyłu można przypisać wartość takiego

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

Zamiast tego można przekazać wartość przez Markup również jak

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

Dzięki ... nie ma błędu i działa dobrze Naprawdę to doceniam –

2

Musisz utworzyć właściwości kontrolki, aby utrzymać te wartości; następnie z kodu strony, po prostu przypisz wartości do właściwości w formancie.

Na kontrolą, można mieć coś podobnego

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

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

Krok 1: Można ex post jako wartości nieruchomości i nie może skorzystać z tak łatwo.

Krok 2: Aby uzyskać dostęp do strony z kontrolą użytkownika można skorzystać z Parent własności lub mogą być pewne custome logowania, aby uzyskać dostęp do strony nadrzędnej i niż kod zapisu spożywać wartości nieruchomości.

+0

czy nasze odpowiedzi spotkały się w połowie :) – ViSu

0

można zrobić coś takiego w swojej kontroli użytkownika

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

i użyć ciągu x.

+0

wypróbowałem, że to daje mi błąd Słowo kluczowe "to" nie jest dostępne w bieżącym kontekście –

1

Musisz zdefiniować właściwości publiczne na formancie, a kiedy użyjesz kontroli na stronie, możesz przekazać wartości do tych parametrów.

Coś jak:

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

w ten sposób, jeśli wszystko jest w porządku, gdy jest tylko kilka elementów sterujących, aby przekazać , ale z dużym kodem numeru będzie bałagan cant mogę przekazać wartość w jakiś inny sposób? –

+0

Nie jestem pewien, czy to rozumiem. Dlaczego jest brudny. Co masz na myśli przekazać w inny sposób? Czy ma znaczenie dokładna składnia tego, jak je przekazujesz? –

+0

Nie Mam na myśli pisanie wierszy dla każdej nieruchomości spowoduje, że kod będzie dłuższy Nadal jestem zielony, więc próbuję przejść przez książkę ..dłuższy kod, więcej szans na pomyłki –