MVC入門
一、什麼是MVC
MVC(Model-View-Controller,模型—視圖—控制器模式)用於表示一種軟體架構模式。它把軟體系統分為三個基本部分:模型(Model),視圖(View)和控制器(Controller)。
二、MVC的工作原理
在MVC中,客戶端的所請求的URL是被映射到相應的Controller去,然後由Controller來處理業務邏輯,或許要從Model中取數據,然後再由Controller選擇合適的View返回給客戶端。我們運行的ASP.NET MVC程序訪問的http://localhost:5049/Home/Index這個URL,它訪問的其實是HomeController中的Index這個Action,見下圖:
其中public ActionResult Index()這個方法稱為Controller的Action,他返回的是ActionResult的類型。一個Controller可以有很多個Action。
那麼一個URL是怎樣被定位到Controller中來的呢?我們先來看一下web.config文件,在web.config文件的httpModules配置節中,我們可以看到一個UrlRoutingModule:
<addname="UrlRoutingModule"type="System.Web.Routing.UrlRoutingModule,System.Web.Routing,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35"/>就是這個UrlRoutingModule來把URL定位到Controller中去的。而對於URL會被路由到哪一個Controller中去,這些我們是完全可以自己定義的。我們到Global.asax文件去看一下:
我們可以看到這裡定義了一個名為"Default"的Route,還定義了默認的參數。默認參數的意義在於,當我們訪問例如http://localhost:5049/的URL的時候,他會將不存在的參數用默認的參數補上,也就是相當於訪問http://localhost:5049/Home/Index一樣。
注意:我們知道在IIS中,我們訪問網站的根目錄的時候,如果我們不指定要訪問的路徑,IIS會自己根據在IIS中設置的默認文檔去訪問。例如我們訪問http://localhost:5049/這個URL的時候,IIS會去尋找網站根目錄下的Default.aspx文件(假設我們設置了IIS的默認文檔為Default.aspx)。而在ASP.NET MVC中對於類似http://localhost:5049/這樣的網站根目錄的路徑,並不會經過Route的處理,所以我們看到我們建立的ASP.NET MVC程序的根目錄下有個Default.aspx文件,該文件就是用於處理前面的訪問根目錄的情況的。請不要刪除該文件。它會將http://localhost:5049/Default.aspx交由ASP.NET MVC來處理,具體請看Default.aspx.cs文件。
我們知道了一個URL是怎樣定位到相應的Controller中去的了,那麼View又是怎麼被返回給客戶端的呢?我們從前面的截圖中看到,Controller中的Action方法中有個return View()的方法。默認情況下它會返回與Action同名的view.在ASP.NET MVC默認的視圖引擎(WebFormViewEngine)下,view是按如下路徑訪問的:
/Views/{Controller}/{Action}.aspx
也就是說對於http://localhost:5049/Home/Index這個路徑,在默認情況下,在Index這個Action中用return View()來返回view的時候,會去尋找/Views/Home/Index.aspx文件,如果找不到這個文件,就會去Share目錄中尋找:/Views/Share/Index.aspx,如果都找不到,就會拋出找不到View的異常。return View("error.aspx")來指定要返回哪一個view:/Views/Home/error.aspx。
那麼為什麼前面我們直接訪問Views/Home/Index.aspx這裡文件的時候會出現404錯誤,說找不到文件呢?因為在MVC中,是不建議直接去訪問View的,所以我們建立的ASP.NET MVC程序在默認情況下就在Views目錄下加了一個web.config文件,內容如下:
也就是訪問Views目錄下的所有的文件都會由System.Web.HttpNotFoundHandler來處理,所以請不要將資源文件(CSS、JS、圖片等)放到Views目錄中。如果你確實要放到Views目錄下的話,請修改Views/web.config文件。
三、簡單實例入門
1、下載MVC安裝包
2、打開VS2008新建MVC Web Application,命名為MvcWebApp
3、項目里新建一個Code文件夾、再新建一個User.CS類
namespace MvcWebApp.Code{ public class User { public string Name {set;get; } public int ID{set;get;} }}
4、在Controller文件夾上右鍵新建MVC Controller Class 並命名為UserController.cs(必須為:「名字+Controller」)
amespace MvcWebApp.Controllers{ public class UserController : Controller { public ActionResult UserIndex() { // Add action logic here MvcWebApp.Code.User user = new MvcWebApp.Code.User(); user.ID = 1; user.Name = "UserIndex"; return View(user); } }}
5、在VIEW文件夾下新建一個User(名字與UserController.cs中的User必須相同)文件夾,再在User文件夾下建立一個MVC View Content Page頁,名字必須與4中的UserIndex()方法名相同
UserIndex.aspx.cs
namespace MvcWebApp.Views.User{ public partial class User : ViewPage<MvcWebApp.Code.User> { }}
UserIndex.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="UserIndex.aspx.cs" Inherits="MvcWebApp.Views.User.User" %><asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"><%=ViewData.Model.Name %></asp:Content>
6、運行、輸入http://localhost:5049/user/userindex查看結果
推薦閱讀:
※祈竹仁波切 | 佛法入門導引 尋找及依止上師(8)
※男人入門級瑜伽--核心8式,減掉大肚腩...
※寫作入門:人物說話的口氣語氣(261)
※【易經入門】第十章 《易經》為什麼會在民間廣泛流傳?
※蔡昔瓊《四柱入門輔導》第八課