2011-12-16 100 views

回答

5

這是一個有趣的問題;但是可以這樣想。

你剛剛寫了一張表,列出了你所有的用戶。您可以在網站的「列表用戶」頁面上顯示。

在「查找用戶」頁面上,您可能希望能夠顯示用戶列表。你是否像以前一樣重寫相同的HTML,代碼,JavaScript,CSS?或者你是否重用了控件,這次添加了用戶名或其他屬性進行過濾的功能?

本質上,用戶控件可以打包網站的可重用位。您可以將其打包在用戶控件中,而不是將其添加到任何地方,只需添加適當的標籤即可將其添加到您想要的任何頁面。

此外,你剛剛在你的項目中做了一個控制,負責處理某些功能 - 它的所有邏輯都在一個地方,並與其他代碼分開。這也是一個重要的概念,因爲它可以阻止所有的代碼混雜在一起。在用戶示例中,您可以通過界面與用戶列表進行交互,而不是將其與其他可能做不同事情的代碼混合。這被稱爲SRP,可以是一件好事。

作爲一個實際的例子,我們有一個顯示我們產品列表的控件。我們可以在查找屏幕,管理員屏幕,「像這樣的產品」屏幕以及「您選擇的產品」屏幕上重複使用相同的控件。這段代碼包含許多邏輯,它們都集中在一個地方,因此可以很容易地維護它,並且它也可以很簡單地重用。

用戶控件可以是一件非常好的事情。所以你應該使用它們,當你覺得你可以打包一組現有的控件,HTML等。它使它們可重用,並且更容易維護。

還有自定義控件的概念 - 這些通常是現有控件的重新實現 - 例如,您可能有一個ExtendedTextBox,用於驗證文本是否有人輸入它。

你可以閱讀更多about both kinds of controls here

+1

我喜歡的另一個例子是當我將標籤,文本框,驗證器和周圍的html分組到一個用戶控件中,然後在編輯屏幕中使用它:。將此行與原始的以及將要設置的所有屬性進行比較。巨大的收益! – 2011-12-16 22:26:04

0

我會盡可能使用VS IDE工具箱提供的控件。如果環境提供的東西沒有完成我想做的事情,我只會推出我自己的控制。

1

用戶控件是很好的爲子程序/功能/方法擅長同樣的原因:代碼(和標記)再利用。

就像子程序一樣,如果控件做了諸如修改全局狀態,做大量數據庫或其他不常用的離線調用,引入不可避免的同步阻塞等,控件可能會成爲問題。它們也可以添加如果它們從未被重複使用,那麼它就是不必要的複雜層。