2011-11-14 83 views
5

我在主頁中的兩個標籤中存儲名稱和姓氏。我在課堂上也有這些價值(班級不怎麼做,但我將它們用於未來的擴展)。我有一個用戶控件,它將發送名稱和姓氏爲正文的電子郵件。從頁面到用戶控件傳遞值

我的問題是,如何將標籤或類變量值轉換爲用戶控件的主體變量?

+0

在該環境中用戶控件產生的? –

+0

對不起,我是ASP.NET和C#的新手 環境中你究竟意味着什麼? –

+0

這意味着usercontrol是否屬於ajax? –

回答

25

與希望傳遞給它的數據的數據類型用戶控件創建一個屬性,並填充它在你的頁面上創建控件。

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

後來這後面的代碼中,你可以指定喜歡

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

取而代之的是價值,你可以通過標記傳遞值也很喜歡

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

謝謝...沒有錯誤和工作正常 真的很感激 –

2

您需要在控件上創建屬性以保存這些值;然後從頁面代碼中,只需將值分配給控件中的屬性即可。

在你的控制,你可以像

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

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

第1步: 可以expost值,房產,比你可以利用的,很容易。

步驟2:要從用戶的控制,你可以利用Parent財產或者可能有些custome登錄訪問父頁面和比寫代碼來使用屬性值訪問你的頁面。

+0

我們的答案是否中途遇到:) – ViSu

0

你可以做這樣的事情在你的用戶控件

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

和使用字符串x

+0

嘗試..它給了我一個錯誤 關鍵字'this'在當前上下文中不可用 –

1

您需要在控件上定義公共屬性,然後在頁面上使用控件時,可以將值傳遞給這些參數。

喜歡的東西:

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

這種方式如果罰款時只有幾個控件通過 但具有大量代碼將是凌亂的 我不能通過其他方式的價值? –

+0

不知道我明白了。爲什麼它很混亂。你是什​​麼意思以其他方式傳遞?它是如何傳遞它的確切語法? –

+0

不,我的意思是爲每個屬性寫代碼將使代碼更長 我仍然是綠色的,所以我正在努力按書去..較長的代碼,錯誤的更多的機會 –