2010-10-07 86 views
1

如何在函數或類中的頁面上引用asp.net控件。在函數或類方法中引用ASP控件

private void PageLoad(object sender, EventArgs e) 
{ 
    //An example control from my page is txtUserName 
    ChangeText(ref txtUserName, "Hello World"); 
} 

private void ChangeText(ref HtmlGenericControl control, string text) 
{ 
    control.InnerText = text; 
} 

這實際上是否會改變txtUserName控件的文本?

我嘗試這樣做,是工作

private void PageLoad(object sender, EventArgs e) 
{ 
    ChangeText(txtUserName, "Hello World"); 
} 

private void ChangeText(TextBox control, string text) 
{ 
    control.Text = text; 
} 
+0

只是想將其寫入的問題後,都沒有嘗試過 – 2010-10-07 22:34:22

+0

是在這其實你'Page_Load'事件ASPX代碼隱藏?您在相同的代碼隱藏中調用的函數是什麼?這是爲了更改任何控件的'InnerText'還是專門設置''控件的'Text'屬性? – Kev 2010-10-07 22:40:30

+0

你只需要給你的控件一個'id'屬性,然後你就可以直接通過它的Id來引用它。 – 2010-10-07 22:40:41

回答

2

是的,它應該,假設它是在頁面生命週期的適當點,所以說什麼都沒用混亂之後它。 (我不知道ASP.NET生命週期的細節

但是,值得一提的是,這裏絕對沒有理由通過引用來傳遞它,它表明你不完全理解.NET中的參數傳遞 - 我建議你閱讀my article on it - 一旦你明白(和參考/值類型區分)的各種事情可能變得更容易爲你

當然,如果你已經嘗試過這個問題給出的代碼發現它不起作用,請詳細說明。根據txtUserName的類型,它甚至可能是ref它不會編譯,但是沒有ref它只會工作。

+0

我不知道默認的對象是通過引用傳遞的 – 2010-10-08 05:38:30

+1

@geocine:它們不是。對象不會*完全通過*。引用是通過值傳遞的。請閱讀我在文中鏈接到的文章。 – 2010-10-08 05:40:19

+0

@js我正在閱讀你的文章,但是檢查了我的更新文章,並請解釋它爲什麼工作。 – 2010-10-08 06:38:26

0

除非我失去了一些東西,你需要做的是這樣的:

private void PageLoad(object sender, EventArgs e) 
{ 
    txtUserName.Text = "Hello World"; 
} 
+0

我知道,我想創建一個方法,不僅僅是爲了稍後改變文本,而是在一個類中。上面的只是一個直接的例子 – 2010-10-07 22:41:59

相關問題