MVC學習系列-基礎瞭解

來源:互聯網
上載者:User

標籤:

ASP.NET 是一個開發架構,用於通過 HTML、CSS、JavaScript 以及伺服器指令碼來構建網頁和網站。ASP.NET 支援三種開發模式:Web Pages、MVC (Model View Controller) 以及 Web Form。下面首先區別比較一下Web Form 和MVC這兩種設計模式,接著進行基礎知識的講解。

一、兩種設計模式的區別

1.WebFrom 這種設計模式的實現方式有兩種

(1)aspx前端頁面+伺服器控制項(為控制項設定事件回應程式法)

(2)aspx前端頁面+非同步+ashx一般處理常式()

兩種實現方式各有利弊,在此不累述

總的來說WebFrom 這種設計模式將程式的處理分為前台與後台,前台頁面為通過 HTML、CSS、JavaScript 以及伺服器指令碼構建的網頁,為aspx檔案。後台代碼為aspx.cs檔案或一般處理常式,是對應於我們前台頁面的代碼(由此可知兩者之間的耦合性比較強,不利於後期軟體變更、維護)。對於初學WebForm的人員,我們常做的就是拖拉伺服器控制項,之後在為他們添加幕後處理代碼。

2.MVC設計模式的實現方式是將前台的呈現與背景控制分離開來(較WebForm有了改進,極大降低了前台和背景耦合性,有利於後期軟體變更、維護),劃分為了三個部分:Controller、View、Model  下面為大家詳細講解一下

Controller:控制器。在Contrller檔案夾添加的以Controller結尾的類就是控制器,它的每個方法就是一個Action。它的職責是從Model中擷取資料,並將資料交給View,它是個指揮家的角色,它並不控制View的顯示邏輯,只是將Model的資料交給View,而具體的怎樣展示資料那是View的職責,所以Controller跟View是一個弱耦合的狀態,而Controller可以任意指定具體的View進行渲染,達到了UI層的代碼和實體良好的分離。

View:視圖.負責資料的展示,當然這個視圖代碼的編寫應該是更接近純淨的Html的,而View層代碼的書寫又直接跟視圖引擎解析的規則有關(在為Action添加視圖時會有一個選項,是選擇Razor還是aspx),Razor的文法跟webFrom視圖引擎的文法截然不同

Model:很多人把Model理解成領域模型,而MVC本身是一個表現模式,它是更傾向於UI層的一個架構,所以一般我們指定的Model在使用時一般作為ViewModel來用。Model層進行資料庫資料的存取,可以使用EF等Entity Framework進行操作。

3.程式的調試

WebFrom:當我們偵錯工具時請求的Url是具體的頁面,我們可以進行某個頁面是首頁之類的設定

MVC:當我們偵錯工具時請求的Url是某個控制器下面的具體的Action,可以通過修改預設路由進行設定

WebForm、MVC這兩種設計模式的比較到此結束,也許兩者之間還有其他的區別,由於本人也是初學,對此不是很清楚,以後再補充

二、MVC設計模式基礎知識

MVC 設計模式總的商務程序如所示:

                           

從上面的處理模型可以看出 使用者請求的是一個控制器下面的具體的Action。用戶端發送一個Http請求,首先被我們的IIS捕獲到,然後根據Url請求的格式,最終交給我們的Route組件,然後它負責解析出我們的Url具體請求的是哪個Controller下的哪個Action。然後MVC經過處理調用我們的Action執行。在Action中我們一般會從業務的Model層取出資料然後將傳輸層的資料轉換成ViewModel再交給View的視圖引擎渲染,最終產生Html的位元組流寫回用戶端。

Routing的作用:擷取到View傳過來的Url請求,並解析Url請求中Controller和Action以及資料,然後將識別出來的資料傳遞給Controller的Action(Controller的方法)。

public static void RegisterRoutes(RouteCollection routes)        {            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");            routes.MapRoute(                "Default", // Route name                "{controller}/{action}/{id}", // URL with parameters// 設定Url的格式,我們也可以自訂                new { controller = "Ajax", action = "Index", id = UrlParameter.Optional } // Parameter defaults //預設請求的是Ajax控制器下面的Index方法            ); //也可以根據需要修改        }

上面講解了一些MVC的基礎知識,下面會基於MVC進行一些具體項目的練習。

MVC學習系列-基礎瞭解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.