說到asp.net MVC,我相信很多開發者都會和我一樣,贊揚一番,把我們開發者的開發速度又可以提高,並且可以隨意的控制生成的html,這應該是Mvc時代如果到來的話,最可能使它成功的原因了。但是贊揚歸贊揚,既然他是一種開發模式,我們必須要學習,而且要好好學習。
元旦幾天假讓我放松了一下,今天正式回歸正常,開始我的技術之旅。今天探討一下Mvc中的分部視圖。
提到分部視圖,我相信大家會想到和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的命名,最好采用固定的要規則的命名方式,盡量減少沖突的發生,畢竟同名的標簽存在會對程序造成隱患。
我相信,每天進步的您,最后一定有一個好的未來。