比方說,我有一個自定義UserControl
(僅包含asp:Literal
和一些字符串屬性)和一個按鈕的頁面。現在我想改變Literal的按鈕點擊文本,所以我改變了我的控件的按鈕點擊事件的字符串屬性。就像這樣:如何在PostBack上更改UserControl的屬性?
//in aspx
protected void Button1_Click(object sender, EventArgs e)
{
testControl.Text = "triggered";
}
問題是我的文字保持不變,因爲第一Page_Load
事件觸發,並創建我的自定義控制,那麼Button_Clicked
火災和改變屬性,但作爲已經創建的控制,它什麼都不做。這背後是我的控制代碼:
public partial class TestControl : System.Web.UI.UserControl
{
public string Text { get; set; } }
protected void Page_Load(object sender, EventArgs e)
{
lblTest.Text = Text;
}
}
我想通了,如果我在自定義控件移動任何邏輯從Page_Load
財產二傳手它會改變像預期。像這樣:
public string Text { get { return lblTest.Text; } set { lblTest.Text = value; } }
是否有任何其他(更好)的方法來做到這一點?我的真正問題涉及比這裏描述的更復雜的控件,但問題仍然相同:在任何回發中,在事件處理程序中設置的所有屬性均被忽略。
聽起來對我來說是個好主意 – tjrobinson 2011-05-11 10:11:56