国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

深入理解模型,視圖和控制器(C#)

2019-11-15 02:32:00
字體:
供稿:網(wǎng)友
深入理解模型,視圖和控制器(C#)

  這篇文章向你提供asp.net MVC 模型,視圖和控制的高度概覽。換句話說,解釋一下ASP.NET MVC中的 ‘M’, ‘V’,和 ‘C’。

  看完這篇文章以后,你應(yīng)該就能理解ASP.NET MVC的不同部分是如何共同工作的。而且你也應(yīng)該能夠理解ASP.NET MVC程序的架構(gòu)與ASP.NET Web窗體程序或ASP程序有如何的不同。

 示例ASP.NET MVC 應(yīng)用程序

  用以創(chuàng)建ASP.NET MVC Web程序的默認(rèn)的Visual Studio 模板包括一個極其簡單的示例程序,可以用來理解ASP.NET MVC Web程序的不同部分。我們在這個教程里就利用這個簡單程序吧。

  運行Visual Studio 2008, 選擇“文件”,“新建”(見圖1),用MVC模板創(chuàng)建ASP.NET MVC程序。在“新建項目”對話框中,在“項目類型(P)”(Visual Basic 或者C#)中選擇你喜歡的編程語言,并在“模板”下選擇ASP.NET MVC Web application。點擊“確定”按鈕。

圖1 新建項目對話框

  創(chuàng)建完新的 ASP.NET MVC 程序后, 出現(xiàn)Create Unit Test PRoject對話框(見圖2). 這個對話框會在解決方案中為你創(chuàng)建一個單獨的用來測試你的ASP.NET MVC程序的項目。選擇選項No, do not create a unit test project并單擊OK按鈕。

圖2 創(chuàng)建單元測試對話框

  ASP.NET MVC 程序創(chuàng)建完成。你會在解決方案資源管理器窗口中看到幾個文件夾和文件。特別是你會看到三個分別名為Models,Views和Controllers的文件夾。顧名思義,這三個文件夾包含了實現(xiàn)模型,視圖和控制器的文件。

  如果你展開Controllers文件夾,你會看到一個名為AccountController.cs和一個名為HomeControllers.cs的文件。展開Views文件夾,會看到三個分別名為Account,Home和Shared的子文件夾。展開Home文件夾,會看到兩個分別名為About.aspx和Index.aspx的文件(見圖3)。這些文件組成了包括默認(rèn)ASP.NET MVC模板的示例程序。

圖3 解決方案資源管理器窗口

  選擇“調(diào)試”,“啟動調(diào)試”運行示例程序。或者按F5鍵也可以。

  第一次運行 ASP.NET 程序時,會出現(xiàn)圖4所示的對話框,建議你啟動調(diào)試。 點擊“確定”按鈕程序就會運行起來了。

圖4 調(diào)試未啟動對話框

  運行ASP.NET MVC 程序時, Visual Studio 會在瀏覽器運行你的程序。示例程序包括2個頁面:Index頁和About頁。程序首次啟動時,出現(xiàn)Index頁(見圖5)。你可以點擊程序右上方的菜單鏈接導(dǎo)航到About頁。

圖5 Index 頁

  注意瀏覽器地址欄的URL,當(dāng)點擊About菜單鏈接時,地址欄中的URL變?yōu)?strong>/Home/About。

  關(guān)閉瀏覽器窗口回到 Visual Studio,你找不到路徑Home/About的文件。這個文件不存在,這怎么可能呢?

 一個URL不等于一個頁

  生成傳統(tǒng)的ASP.NEW Web窗體程序或ASP程序時,一個URL對應(yīng)一個網(wǎng)頁。如果向服務(wù)器一個名為 SomePage.aspx的頁面發(fā)起請求 ,那么磁盤里最好存在這么一個名為SomePage.aspx的頁面。如果 SomePage.aspx 文件不存在,將會得到一個丑陋的404 – Page Not Found錯誤。

  相反,生成 ASP.NET MVC 程序時,在你輸入瀏覽器地址的URL和你要在程序里找的文件之間并沒有對應(yīng)關(guān)系。在

  ASP.NET MVC程序中, 一個URL并不對應(yīng)磁盤上的頁而是對應(yīng)一個控制器action。

  在傳統(tǒng) ASP.NET或者 ASP 程序中, 瀏覽器請求被映射到頁面。相反,在 ASP.NET MVC 程序中, 瀏覽器請求被映射到控制器action。 ASP.NET Web 窗體程序以內(nèi)容為中心。 相反,ASP.NET MVC 程序以程序邏輯為中心。

 理解ASP.NET Routing

  瀏覽器請求通過一個名為 ASP.NET Routing 的ASP.NET 框架特性來獲得控制器action的映射。 ASP.NET Routing 被 ASP.NET MVC 框架用來對傳入控制器action的請求進行路由。

  ASP.NET Routing 用一個路由表來處理傳入的請求。當(dāng)web程序第一次運行時這個路由表就會被創(chuàng)建。 它是在 Global.asax 文件中被創(chuàng)建的。默認(rèn)的 MVC Global.asax 文件如代碼1所示。

 代碼1 – Global.asax

12345678910111213141516171819202122232425262728293031using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Routing;namespace MvcApplication1{// Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801public class MvcApplication : System.Web.HttpApplication{public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = "" } // Parameter defaults);}protected void Application_Start(){RegisterRoutes(RouteTable.Routes);}}}

  ASP.NET 程序首次啟動時, Application_Start() 方法會被調(diào)用。在代碼 1中,此方法調(diào)用 RegisterRoutes() 方法創(chuàng)建默認(rèn)路由表。

  默認(rèn)路由表只包括一個路由。這個默認(rèn)的路由將傳入的請求分為三段(一個URL段就是兩個斜杠間的任何東西)。第一段映射到控制器名,第二段映射到action名,最后一段映射到一個傳到action的名為Id的參數(shù)。

  例如,考慮以下URL:

  /Product/Details/3

  這個URL 被解析為類似這樣的3個參數(shù):

  Controller = Product

  Action = Details

  Id = 3

  Global.asax 文件中定義的默認(rèn)路由包括所有三個參數(shù)的默認(rèn)值。默認(rèn)的控制器是 Home, 默認(rèn)的 Action是 Index, 默認(rèn)的 Id 是空字符串。心里想著這些默認(rèn)值,思考一下下面的URL是怎么解析的:

  /Employee

  這個 URL 被解析成類似這樣的三個參數(shù):

  Controller = Employee

  Action = Index

  Id =

  最后,如果你不輸入任何URL(例如,http://localhost)就打開 ASP.NET MVC 程序的話URL就像這樣解析:

  Controller = Home

  Action = Index

  Id =

  這個請求就被路由到HomeController類的 Index() action 中。

 理解控制器

  控制器負責(zé)控制用戶與MVC程序交互的方式。控制器包括了ASP.NET MVC程序的流控制邏輯。控制器決定當(dāng)用戶發(fā)送一個瀏覽器請求時返回什么響應(yīng)。控制器就是一個類(例如,一個Visual Basic或者C#類)。樣例 ASP.NET MVC 程序包括一個位于Controllers文件夾中名為 HomeController.cs 的控制器。 HomeController.cs 文件內(nèi)容轉(zhuǎn)載在代碼 2中。

 代碼 2 – HomeController.cs

<noscript id="shfmg"><dl id="shfmg"></dl></noscript>
123456789101112131415161718192021222324252627using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace MvcApplication1.Controllers{[HandleError]
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 焦作市| 株洲市| 大足县| 元阳县| 阿巴嘎旗| 永胜县| 天门市| 宝山区| 从江县| 阿勒泰市| 南华县| 福贡县| 元朗区| 南开区| 昌江| 和硕县| 奉节县| 忻城县| 平远县| 德州市| 大洼县| 呈贡县| 汾西县| 济源市| 顺平县| 金乡县| 青岛市| 临朐县| 通榆县| 延津县| 常山县| 合山市| 宣城市| 古田县| 益阳市| 托克托县| 卓尼县| 蚌埠市| 西乌珠穆沁旗| 保康县| 汝州市|
<rp id="shfmg"><tbody id="shfmg"></tbody></rp>