Asp.net MVC項目默認會引用不少第三方插件,特別是如今的5.0,默認示例項目就幾十M,
搞得
都不知道那些纔是MVC必須的,是重點,那些是無關緊要的。
今天咱們就來試驗一下,看看一個最小的MVC工程都須要那些東西。固然,爲了試驗,咱們就不用VS自帶的新建MVC工程,而是本身用一個普通的Web應用程序來搭建一個MVC項目,一層層揭開MVC的神祕面紗。
下面的示例工程用的是VS2013,其它版本可能有些不一樣,但道理都是同樣的。
第一篇,建一個最小的MVC工程。

第一步,打開VS2013,新建一個項目
第二步,新建一個asp.net Web應用程序
第三步,選擇空模板,WebForms、MVC、Web API都不選,無身份認證。
上面幾步,在VS2010或2012的直接建一個空的Web 應用程序就行。
建好後的工程像這樣的,什麼都沒有。
第五步,在項目上右鍵,單擊管理NuGet程序包,打開NuGet(
vs2010略有些不一樣)。
使用NuGet安裝MVC是爲我獲取咱們須要的文件,不是必須的,本示例中只會使用System.Web.mvc.dll。若是不用GuGet下載的話,你也能夠去別的地方下載相應的程序集,記住本身引用的版本,後面會有些配置文件配置。
第六步,聯機搜索asp.net mvc,搜到後安裝,什麼版本均可以,這裏安裝的是5.0版本。
接受
5.0的MVC默認會安裝這些東西。
比剛纔多出了7個引用。
第七步,將除System.Web.Mvc外的其它6個刪除,在項目根目錄下創建Controllers、Models、Views三個文件夾。
第八步,爲項目添加一個全局應用程序(Global.asax),添加上面圈的那句代碼和外用。
第九步,在Controllers目錄下添加一個名爲HomeController的類。
選引入System.Web.mvc命名空間,讓
HomeController
類繼承Controller類,添加一個Index的方法,代碼如圖。
注意,這時VS2013已經能夠添加控制器了,VS2010沒有,但咱們是爲了試驗,因此是添加一個類,不是添加一個控制器
第十步,在Views目錄下建一個Home目錄,再在Home目錄下面建一個Index.aspx的Web窗體,刪除Web窗體的後置代碼文件,只保留Index.aspx文件,更改代碼如圖所示。
第十一步,打開Global.asax文件,爲當前項目添加一個默認的路由,如圖紅圈內代碼。
第十二步,運行代碼,OK。
經過上面的實驗,咱們能夠看到,其實Mvc和傳統的Web 應用程序並無任何不一樣,就是多引入了些程序集而已,核心的程序集只有一個System.Web.mvc.dll。
只是在VS中,特別是VS2010中,直到最後項目能正常跑起來了,仍是沒法經過右鍵菜單添加控制器或視圖,感受好像是兩個不一樣的東西樣。但在VS2013中,算是迴歸本質了,你就算建一個Web窗體應用程序工程,只要引入了
System.Web.mvc.dll,就能夠享受和MVC工程同樣的右鍵菜單了。
2014-01-15補充瀏覽器
其實上面的項目還不是最小的MVC項目,還能夠去掉一部分。具體操做是:mvc
1.刪除全局應用類下的AreaRegistration.RegisterAllAreas();asp.net
2.刪除Models和Views文件夾及下面的文件。spa
3.更改Home控制器的Index方法返回值類型爲string,方法體直接返回一個字符串就行。.net
這時再運行項目,瀏覽器會輸出你在Index方法中返回的字符。到此,我想纔是最小的MVC項目吧(連Models和Views都沒有了,直接叫asp.net c了,其實Controllers文件夾也能夠不要



),還有更精簡的麼,有的話留言告訴我。插件
如今看來,一個普通項目要想變成支持MVC的項目,只需作3件事,1.引用System.Web.mvc.dll 2.新建一個以Controller結尾的類,繼承System.Web.mvc.Controller類。3.在應用程序啓動時註冊一個默認的MVC路由便可。3d