其實在MVC 中只存在三大組件,Model、View、Controller,其中Model用來作為業務邏輯處理,Controller負責的是Model和View的交互,View負責頁面顯示。
這是非常簡單的結構,但是在MVC中有着非常好的可擴展性,我們可以通過對MVC進行全面的擴展來實現我們自己的框架結構或者是實現方式。簡單的利用MVC來實現一些頁面的
實現是非常容易的,並且不需要我們付出太大的精力。但是這不能真正的讓我們了解到底什么是MVC?為什么要使用MVC?
MVC是一個非常優秀的框架,它的優秀程序甚至比Web form的到來還要先進,但是我們對於web form的學習是投入了很大的精力的,各種事件的掌握都會令我們感到滿足,但是
在MVC中沒有了各種事件的困擾,也帶來了我們學習深度的降低,下面我們一起來梳理一下,學習MVC 我們還需要對哪些技術點做更深入的學習。
-
htmlHelper 和UrlHelper 類,這是我們在View層進行頁面顯示組件的常用類或者是唯一類,但是我們又對它了解哪些呢?我們了解為什么可以使用htmlHelper類?因為使用了擴展方法,我們自己是否可以正確的定義一些helper類來滿足我們自己的業務需求,對於擴展方法我們又理解多少?htmlHelper類中的那幾個方法我們是否完全的掌握?
-
ActionResult 這是Controller 中Action的返回類型,當然返回類型為void或其他類型的除外,如果我問你,在MVC中一共有多少個xxxResult 繼承自ActionResult?你可以在一分鍾之內准確的回答嗎?如果你的答案是no,那么我們能做的是什么,繼續深入,多做筆記,多回憶?
-
Filter 這是MVC 3 中我特別喜歡的一個特性,尤其是增加了全局過濾器以后,更加玩美。在MVC中內嵌了4中Filter,你是否可以說出具體名字呢,是否可以不用智能提示,完全的書寫出來呢?Filter 是一種AOP的面向切面的編程方式,我們可以通過繼承自FilterAttribute以及對應的接口來自定義實現各種Filter的過濾,我們是否使用過?是否可以正確的編碼出來我們需要的Filter呢?
-
Area 我曾經在我的一篇博客中說到這是在MVC 3中出現的一個新特性,但是有園友回復在MVC 2中就已經存在,我找了一下,沒有找到添加Area的操作,可能我電腦中缺少某些東西,不討論這個了。Area 又稱為區域,我們可以在一個完整的應用程序中定義不同的功能點,比如前台 和后台的區分?Area 可以輕松的將這兩種不同功能點玩美的區分開來,但是我們使用Area的時候 需要注意一些問題?大家是否可以立刻回答都有哪些呢?首先就是要在注冊路由中添加命名空間,還有一個就是我們在使用htmlHelper進行頁面跳轉的時候,這個Area的設置也是必不可少的?
-
ViewEngine 視圖引擎,說的好聽點就相當於發動機,就是驅動我們程序運行的機制,那么在MVC中我們可以采用的視圖引擎有WebFormViewEngine以及RazorEngine這兩種,當然我們也可以采用第三方提供的視圖引擎?那么我們有沒有想過,是否我們自己可以定義自己可以完全掌握的視圖引擎來驅動我們程序的運行?如果你說可以,那么你就是真的大牛,如果為no,那么咱們還是老老實實的繼續深入吧。
-
IOC繼承 我們知道,MVC對於IOC的實現提供了非常靈活的方式實現,我們可以通過IOC來實現SOC 關注點分離,那么我們采用哪種IOC框架?我本人采用的是AutoFac,以及如果在MVC中使用這種框架來實現程序的靈活性控制呢?當然IOC的實現方式,一共就三種,構造函數,屬性還有另外一個不常用的方法注入。我們真的可以在MVC中靈活的實現這些框架嗎。繼續努力吧
-
MVC 的運行機制,我們知道asp.net 是一個非常復雜的框架結構,MVC就運行在這種復雜的框架結構之上,那么我們知道在MVC中Controller是如何激活的呢?Action是如何運行的?而使用了Area以后為什么可以定義到不同Area的相同Controller以及Action之上呢?只有掌握了內部原理,我們才可以避重就輕,編寫更加簡潔而且運行效率更高的代碼
-
IIS 如果在IIS中部署MVC,如果你不參考網上的教程,僅僅憑借你的記憶,你可以正確的讓MVC程序在IIS上正確的跑起來嗎?我是不敢這么說,因為我一般都是參考網上的教程來做的。
-
值的傳遞 在MVC中,Model數據傳遞到Controller,Controller將數據傳遞到View,或者View可以從Model直接獲取數據,這些數據的傳遞有什么說法?我們應該如何來避免數據傳遞帶來的程序bug呢?強類型當然會是一個明智的選擇
-
數據驗證 在MVC中特別人性化的地方,就是它提供了很多可以對字段進行驗證的特性,我們可以利用或者擴展這些特性來為我們的頁面進行數據驗證?MVC提供的數據驗證Attribute有很多,我們是否可以正確的使用它,而不會引發各種問題。我記得字段名稱如果和View中的ID存在一致,那么會有隱藏的問題存在?自定義數據驗證,我們來擴展我們的業務邏輯。
-
Razor 語法 這是MVC 3中新添加的一個語法結構,我們可以使用它來完成我們在View層 顯示數據,但是使用@符號也有很多問題要注意?我們是否可以想到呢?Razor語法本身是一個非常優雅的語法結構。
-
對於異常的處理、404 、500等特殊錯誤的頁面,日志的處理,性能優化,程序的安全性考慮 等這些都是我們作為程序員應該掌握的知識,每個知識點如果我們要完全掌握,恐怕我們這一生都要在學習中度過了。
學習是一種很神聖的東西,它帶來的是我們心靈的洗滌,拋棄浮躁,永遠的深入下去,去找尋我們自己。