提到分部視圖,我相信大家會想到和web form時代的對應物ascx分部控制項,我們在Mvc時代可以更加輕鬆的控制分部視圖。
要說明分部視圖,我們先來討論一下分部視圖可以帶給我們的優點:
- 分部視圖可以使系統外掛程式化 。我現在非常推崇一個原則,就是可以分離的東西絕對不要讓他們在一起,因為只有每個功能模組都是單獨的,我們才可以在其他位置重用它。
- 分部視圖還可以帶來一個優點,就是分工合作。 現在是一個合作的時代,沒有任何一個人可以單獨完成規定的任務而不與別人合作,除非是牛人例外。分部視圖可以帶給我們開發不同模組中的分工合作。
- 分部視圖還有一個在Mvc時代的優點,就是實現簡單。我自從學習使用Mvc以後,我基本上就很少寫web form的代碼了,因為我感覺沒有Mvc書寫的那麼流暢。html.partial(partialName)就可以顯示一個分部視圖的頁面。
簡單的敘述了一下優點,既然我們能發現優點存在,那麼我們就想在實際項目中更好的使用它,畢竟程式員都追求懶,一段代碼,三句可以搞定,絕對不會寫三句半,當然最小化原則也是我們代碼最佳化的最終目的。
那麼究竟在Mvc中有哪些可以實現分部視圖的功能呢?以及我們要注意點什麼呢?
- Html.Partial(partialName)和html.RenderPartial(partialName) 就是首選。 其實這兩個方法我們可以指定任何的.cshtml檔案,不一定只是分
部視圖。大家來回憶一下分部視圖和視圖的區別在哪裡?就是視圖有head、body標籤,可以定義js,可以指定母板頁,但是在我們用Vs右鍵添加
分部視圖的時候,我們會看到只是一些基本的html標籤,沒有任何的head、body,但是這不等於我們不可以添加,所以說partialName可以是任
何的視圖檔案。但是我們最好是建立分部視圖,因為我們最終是要把這些分部視圖合并成為一個頁面,如果只是分部視圖的html標籤,那麼在整
體頁面中html標籤就會顯得很乾淨。
另外,我們不要在分部視圖中定義或者引用css以及js。如果需要我們在整體頁面中定義或引用。原因有2:1是我們的分部視圖檔案和整體頁面的
路徑可能不在同一個目錄下,那麼會造成找不到css或js檔案的情況。2就是對整體頁面的html代碼是一種傷害。
- html.Action和html.RenderAction()方法也可以用來作為分部視圖使用
具體使用方式我想就不需要細說了,大家對htmlHelper都會非常熟悉,因為常用嘛。
這段時間我在做項目,就大量的使用到了分部視圖,現在來總結一下,讓後來的學習者少走一點彎路。
- 如果可以,盡量使用母板頁,這樣可以很好的控制網站的樣式。
- 採用單獨的css檔案,單獨的js檔案,盡量不要在分部視圖中定義樣式,而是在整體頁面中。
- 分部視圖的html標籤應該儘可能的少,除了要顯示的內容之外,不要有任何雜質存在。樣式css、js等在整體頁面添加。
- 如果可以,盡量採用html.partial(partialName)或html.RenderPartial(partialName)的方式,而不要用html.Action來作為分部視圖的方式,因為這種方法會和控制器互動。
- 對分部視圖的傳值盡量採用Model的方式進行,如果一個分部視圖需要傳遞兩個參數,那麼我建議你分成兩個分部視圖。
- 採用分部視圖會對整體頁面的樣式調整帶來困難,所以我建議先整體做出頁面,然後再分成不同的分部視圖。
- 過多的分部視圖會增加伺服器的延遲,所以分部視圖的控制要得當,我建議控制在10個以內吧,如果伺服器允許,更多也是可以的。
- 要注意分部視圖的標籤id的命名,最好採用固定的要規則的命名方式,盡量減少衝突的發生,畢竟同名的標籤存在會對程式造成隱患。
我相信,每天進步的您,最後一定有一個好的未來。