2011-01-10 48 views
1

在我的ASP.Net MasterPage中,我有時會有大多數頁面需要訪問的控件。 現在,而不是使用這個訪問控制MasterPage - 將控件作爲屬性引用?

((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo"; 

我傾向於把在母版一物業與該控件的引用,設置在頁面的@MasterType指令和訪問這樣的控制:

this.Master.BreadCrumb.Text = "foo"; 

我覺得這種方法更容易使用,但我從來沒有看到有人這樣做,所以我不知道是否有什麼好的理由反對它,我失蹤了?

回答

1

由於多種原因,使用屬性比使用FindControl好得多,我很高興您使用這種方法! 使用屬性的最有說服力的理由是可以說你改變了控件的名字,或者把它們一起刪除。現在,你有一個編譯器錯誤,更容易發現。例如,如果您重命名lblBreadCrumb並且您使用的是FindControl,則編譯器不會捕獲此錯誤,而是您的應用程序在運行時將失敗。在編譯時捕獲錯誤是一種語言的重要特性。

您之所以沒有看到許多其他開發人員這樣做,是因爲良好的面向對象設計很難在Web窗體中找到。

+0

編譯時錯誤的好處!感謝您指出,從未跨過我的想法。 – magnattic 2011-01-10 00:51:41

1

不,這是很多頁面訪問它的好方法。

有時候,我可以多抽一點。例如,不是直接訪問控件,而是直接在母版頁上創建一個屬性,如BreadCrumbText。