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項目,還可以去掉一部分。具體操作是:
1.刪除全局應用類下的AreaRegistration.RegisterAllAreas();
2.刪除Models和Views文件夾及下面的文件。
3.更改Home控制器的Index方法返回值類型為string,方法體直接返回一個字符串就行。
這時再運行項目,瀏覽器會輸出你在Index方法中返回的字符。到此,我想才是最小的MVC項目吧(連Models和Views都沒有了,直接叫asp.net c了,其實Controllers文件夾也可以不要),還有更精簡的么,有的話留言告訴我。
現在看來,一個普通項目要想變成支持MVC的項目,只需做3件事,1.引用System.Web.mvc.dll 2.新建一個以Controller結尾的類,繼承System.Web.mvc.Controller類。3.在應用程序啟動時注冊一個默認的MVC路由即可。