簡體   English   中英

Web表單中用戶控件的數據綁定最佳實踐

[英]Databinding best practice for User Controls in Web Forms

我想知道Web表單中數據綁定的一些最佳做法。

例如,我們有一個控件:

public partial class MyUserControl : UserControl
{
    public override void DataBind()
    {
        //#1
        base.DataBind();
        //#2
    }
}

如果我們希望該控件自動綁定其數據,我們將執行以下操作:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.DataBind();
    }
}

在代碼的第一部分中,如果我們在調用base.DataBind()(#1)之前進行了數據綁定,那么這意味着,例如,如果我們對ListView進行數據綁定,則不必調用ListView.DataBind()因為當我們在控件上調用base.DataBind()時,它將在所有子控件上遞歸調用DataBind。 同樣,我們將無法訪問使用數據綁定代碼塊<%#%>分配給它的控件的任何屬性。

如果我們在base.DataBind()(#2)之后對控件進行綁定,那么這意味着DataBind在這些控件上被調用了兩次。 一次是在調用base.DataBind()時,第二次是我們被迫調用control.DataBind()。

有人知道我不知道的某種我可以遵循的模式嗎?

我在這里有意義嗎?

我究竟做錯了什么?

編輯:看此頁: http : //msdn.microsoft.com/zh-cn/library/w5e5992d.aspx

使用此方法可以將數據從源綁定到服務器控件。 通過數據庫查詢檢索數據集后,通常使用此方法。 該方法主要由控件開發人員使用。 大多數控件會自動執行數據綁定。

似乎最佳實踐是自動綁定控件數據。 數據綁定用於當我們顯式設置數據源時。

以前,當頁面變得復雜並且您依賴用戶控件在頁面加載事件中綁定其自己的數據時,我曾遇到過問題。 這導致了一些長時間的調試會話,因為無法確切保證控件中的此頁面加載事件何時觸發。

現在,這就是說,這些頁面的設計不是很好,我們不應該遇到這個問題,但是我更喜歡堅持明確的說法,讓我的頁面告訴子控件何時做他們的事情-您可能希望為避免調用base.DataBind並顯式地執行它-您可能還希望不要以這種方式覆蓋DataBind方法,而改用另一個名稱在控件上調用該方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM