一 概述
MVC作為一種當前比較好的開發web的框架,不得不提一下了,和WebForm比較來看,有了很大的進步和改進。
先進行一個簡單的比較,兩個都是Web開發框架,理念仍然是較快速開發。
不過MVC已經幾乎摒棄了臃腫的服務端控件,采用更為簡潔和可定義的標簽形式。前台View視圖和后台Controller控制器弱耦合分離的形式,比Asp.Net前台后台采用繼承的緊耦合形式更加靈活和合理。
二 基本三元素介紹
MVC不得不說的三個主要元素,就是Model,View,Controller這三個元素。下面簡單地一一介紹下:
Model:這是主要負責數據庫和Controller控制器交互
View視圖:這是主要負責展示Controller傳輸給他的數據
Controller控制器:主要接受Model傳過來的數據,然后傳給View
畫個圖吧,好看些
BLL,DAL,Models是簡單三層的概念,寫出來防止大家把Model和Models弄混了,這里的Model可是包括了這三個的
三 創建一個簡單的項目Demo
在這里,我還是比較喜歡使用項目來學習,理論講一部分就好了,更多的理解,就通過項目來學習吧
環境:
VS2010時需要去下載獨立的MVC安裝包的,不是很復雜,百度可以告訴你一切
VS2012時就不需要下任何安裝包了,直接就可以新建MVC項目了
然后選擇MVC 4,創建一個空白的MVC項目就可以了,凡事從簡單入手嘛!
看到這個目錄,里面很簡單,除了之前講的三個基本元素,View,Controller,Model ,剩下的App_Data放私有權限的東西,比如數據;App_Start存放的一些重要的初始化類,后面再詳細講;Global.asax是應用程序文件,主要負責管道事件,后面詳細講;剩下的幾個config就是簡單的配置文件;
四 Controller控制器
在Controllers右鍵添加控制器,默認使用HomeController,注意:后綴一定要是Controller,在MVC有時候約定大於配置,某些約定的配置就是這么默認的,不要輕易更改。
請注意,這里開始講解配置會比較多,理念的理解還是主要是開頭的理念,Controller的作用這里就不再累贅了。
在新建的Controller里面有一個,Index,這是其中的一個Action的名字,在這里Action的含義是動作,可以理解為頁面的各種動作,Index就是默認的一個動作。
在Index上面右擊,添加視圖,視圖的名字默認和Action是一樣的,不用修改,目前選擇使用Aspx視圖引擎,先不要模版。
添加后跳到了Index.aspx頁面,這是一個HTML的世界,當你習慣性地打開工具箱的時候,你會發現,工具箱中的控件少得可憐,沒有那些強大的服務端控件,沒有了那些拖慢了aspx頁面的服務端控件,剩下的只有簡單的html。
讓我們簡單的寫點上去,Hello World必須寫,你懂的,運行起來吧小宇宙。。。。。
這里要看到一個:URL地址,默認其實是localhost:7777,我現在寫的是補全后的地址。
Home是我們的控制器的名字,Index是我們Action的名字,相信朋友們應該發現一點MVC的奧秘了吧
對,沒錯,你們想得沒錯,MVC在這里的里面,是用 Controller+Action 確定訪問地址,簡單粗暴,嘿嘿....
五 Controller+Action
剛才講到了訪問地址,下面呢,我們再講一點,頁面跳轉的知識,后面我們再進行別的問題的深入。
在剛開始學習MVC的時候,對Controller和Action的理解一般都會比較模糊,下面的幾個例子來看下:
在Home控制器下新建一個Action
並且添加視圖,在新建的試圖里面寫點東西
回到我們的Index視圖中,
運行,點擊我們的Link to MyAction
在此看地址,已經更改了,其實這種沒有后綴的形式,在<a>的鏈接屬性方面還是沒有什么差別的。
再來看一個,更強大的東西,傳說中的HtmlHelper:
<div> Hello World,MVC,I'm JamesZhu. <hr/> <a href="/Home/MyAction">Link to MyAction</a> <hr/> <% Html.ActionLink("Link to MyAction", "MyAction", "Home"); %> </div>
可以達到同樣的效果,嘿嘿,Html這是一個很強大的東西,后面再深入講,今天寫到這里了,嘿嘿
四 總結
稍微總結下,這篇文章,主要時候有一定web開發經驗,熟悉html前端,以及asp.net,然后又想學習mvc的朋友,可以借鑒下。
聲明
本文主要是個人學習MVC后的一些經驗以及看法,僅供參考,如有錯誤,歡迎指正,謝謝。
個人感覺:在學習MVC之前,最好有以下知識儲備:HTML,Jquery,Ajax,Asp.Net等技術基礎