1. 程式人生 > >ASP.NET MVC 重點教程一週年版 第二回 UrlRouting

ASP.NET MVC 重點教程一週年版 第二回 UrlRouting

一、什麼是UrlRouting


你可以使用UrlRouting來配置一些URL的對映,使使用者可以按你的規則來訪問網站.
使用UrlRouting,一定要規定URL模式,它包括一個位置標識,它將在你請求網頁時按這個規則返回給你內容. 當然,這個建立的規則完全是由你自己定義的.
上回說道如何訪問index.aspx及about.aspx:

這是怎麼回事呢,那我們要怎樣才能訪問呢 ?
答案是:
http://localhost/Home和http://localhost/Home/About
這是為什麼呢?

這就是UrlRouting的功能,而這個功能的配置是由,URL的請求規則定義的,這個規則定義在Global.asax.cs中定義。

二、基本UrlRouting規則的定義

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication2
{
    /// <summary>
    /// 還是老規矩,按序號看
    /// </summary>
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
// visit http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : System.Web.HttpApplication { // 4.注意: 將1標的規則更改為 "{controller}.mvc/{action}/{id}" 即可 // 自行支援 IIS6 and IIS7 兩種模式 // 筆者注:一般的虛擬主機不支援.mvc,.aspx也要檢查檔案存在 // 變通方法為可以將.mvc換成.ashx或.asbx public
static void RegisterRoutes(RouteCollection routes) { //5、此路徑不受後面規則控制 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //1、大家可以回憶一下Controller和Action的定義 //因為MVC與傳統Aspx的最大不同就是訪問是 //訪問的Controller.Action即某類下的一個函式而不是aspx檔案, //要展現給使用者哪一個aspx檔案是由Controller決定的(即預設的同名規則) //這個是檔案預設自帶的UrlRouting規則,是將Controller/Action/id的訪問 //模式指向對應的Controller及Action routes.MapRoute( "Default", // Route 名稱 "{controller}/{action}/{id}", // URL引數 new { controller = "Home", action = "Index", id = "" } // 2、引數的預設值也就是如果各部分為空的話訪問 //HomeController下的Index這個Action ); } protected void Application_Start() { //3.這個沒什麼好講了,就是在應用程式啟動時初始化它 RegisterRoutes(RouteTable.Routes); } } }

注意這一點ASP.NET MVC 中URLRouting只與Controller/Action有關

三、UrlRouting解決的問題

UrlRouting是為了讓Url更簡短更有意義才出現的,例如:

post.aspx?year=1999&month=3&day=8 的引數URL變為
/post/1999/3/8/ 這樣的簡短漂亮且有意義的URL

而類似home/about.aspx?id=12,以示例中的Global.asax.cs中定義的{controller}/{action}/{id}規則為列
/Home/About/12其實就是訪問
Controller="Home" Action="About" 它的一個QueryString引數為 id="12"

四、UrlRouting相關資料

那麼我們要怎麼利用ASP.NET MVC編寫自己想要的頁面呢?