2010-04-09 126 views
5

嗨我創建了一個名爲test.ascs的用戶控件帶有一個文本框。現在我在我的default.aspx頁面中添加了這個用戶控件。我如何從我的default.aspx頁面訪問該文本框的值?如何從頁面訪問usercontrol的值?

有沒有機會?

回答

3

從您的默認頁面嘗試使用您的用戶控件查找文本框。

TextBox myTextBox = userControl.FindControl("YourTextBox") as TextBox; 
string text = myTextBox.text; 
+3

此方法可能工作,但它聞起來很大。你有硬編碼的文本框ID。在嘗試訪問其屬性之前,您沒有檢查結果是否爲!= null。使用FindControl比使用適當的面向對象的方式進行並且暴露用戶控件上的屬性要慢得多並且效率低下。 – slugster 2010-04-09 09:16:55

3

如果是這種控制的目的,然後創建一個公開此值在用戶控件的公共屬性,你就可以訪問您的網頁:

string textBoxValue = myUserControl.GetTheValue; 
+0

其中'myUserControl'是標記中UserControl的ID:'' – abatishchev 2010-04-09 09:29:19

6

我通常暴露文本框的文本屬性直接在test.ascx後面的代碼是這樣的:

public string Text 
{ 
    get { return txtBox1.Text; } 
    set { txtBox1.Text = value; } 
} 

然後你可以從代碼設置文本框狀的Default.aspx的背後:

usrControl.Text = "something"; 
var text = usrControl.Text; 
2

如何從在頁面中的用戶控件,其使用該用戶控件訪問的文本框的值

步驟1:在用戶控制使一個事件處理程序

public event EventHandler evt; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     txtTest.Text = "text123"; 
     evt(this, e); 
    } 

2:在頁致電事件處理程序

protected void Page_Load(object sender, EventArgs e) 
    { 
     userCntrl.evt += new EventHandler(userCntrl_evt); 
    } 

void userCntrl_evt(object sender, EventArgs e) 
    { 
     TextBox txt = (TextBox)userCntrl.FindControl("txtTest"); 
     string s = txt.Text; 
    } 
相關問題