程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET MVC案例教程(基於ASP.NET MVC beta)—第三篇:ASP.NET MVC全局觀

ASP.NET MVC案例教程(基於ASP.NET MVC beta)—第三篇:ASP.NET MVC全局觀

編輯:關於ASP.NET

前言

在上一篇文章中,我們實現了第一個ASP.NET MVC頁面。對於沒有接觸過這個框架的朋友來說,可能對有些地方會迷惑,所以這 篇文章我將通過圖示配合文字的方法,站在全局的角度介紹一些ASP.NET MVC的運行機制,這樣可以幫助朋友們更好的理解後續文章。 ^_^

全局

首先我們來看一副圖片,由於這幅圖是我自己畫的,不是摘自微軟官方,所以如果有什麼不到位的地方還望海涵!

首先,用戶通過Web浏覽器向服務器發送一條 url請求,這裡請求的url不再是xxx.aspx格式,而是http://HostName/ControllerName/ActionName/Parameters的樣子。這個請求被ASP.NET MVC的路由映射系統截獲。(路由映射可以在Global.asax中配置,我們一會再說)路由映射系統按照映射規則,解析出控制器名 ControllerName,Action名ActionName和各個參數Parameters,然後,找尋Controllers目錄下的ControllerNameController.cs這個控制器類 ,默認情況下,系統總是找尋Controllers目錄下的“控制器名+Controller”這麼一個類,然後,找尋這個類下與ActionName同名 的方法,找到後,將Parameters作為參數傳給這個方法,而後Action方法開始執行,完成後返回相應視圖,默認情況下,會返回Views目錄下與 ControllerName同名的目錄下的與ActionName同名的aspx文件,並且將ViewData傳遞到視圖。ViewData中一般包含了控制視圖顯示的控制量以 及視圖顯示需要的數據。

我們按以上思路回顧一下上一篇中主頁的請求過程。我們傳遞的url是http://localhost/Home/Index。默認路 由規則下,將ControllerName設為“Home”,ActionName設為“Index”,沒有參數。於是系統找尋Controllers目錄下 的HomeController類的Index方法,成功找到,於是執行之。這個方法調用Mock的Model取出一些數據,放入ViewData相應鍵值項裡。然後返回 視圖,返回的是Views下Home下的Index.aspx。這個視圖取出ViewData中的數據按照一定格式呈現,於是完成了一次典型的ASP.NET MVC調用。

路由

從上面可以看出,ASP.NET MVC中路由是很重要的。它直接決定了如何解析url,因此決定了系統如何工作。那麼,下面我 們來揭開路由神秘的面紗。

打開我們Demo下的Global.asax.cs文件,可以看到如下代碼:

Global.asax.cs:

1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using System.Web.Routing;
7
8namespace MVCDemo
9{
10  // Note: For instructions on enabling IIS6 or IIS7 classic mode,
11  // visit http://go.microsoft.com/? LinkId=9394801
12
13  public class MvcApplication : System.Web.HttpApplication
14  {
15    public static void RegisterRoutes(RouteCollection routes)
16    {
17      routes.IgnoreRoute("{resource}.axd/ {*pathInfo}");
18
19      routes.MapRoute(
20        "Default",                        // Route name
21        "{controller}/{action}/{id}",               // URL with parameters
22        new { controller = "Home", action = "Index", id = "" } // Parameter defaults
23      );
24
25    }
26
27    protected void Application_Start()
28    {
29      RegisterRoutes(RouteTable.Routes);
30    }
31  }
32}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved