一、什麼是UrlRouting
你可以使用UrlRouting來配置一些URL的映射,使用戶可以按你的規則來訪問網站.
使用UrlRouting,一定要規定URL模式,它包括一個位置標識,它將在你請求網頁時按這個規則返 回給你內容. 當然,這個創建的規則完全是由你自己定義的.
上回說道如何訪問index.aspx 及about.aspx:
但是http://localhost/Views/Home/Index.aspx和 http://localhost/Views/Home/About.aspx這兩個地址並無法直接訪問以下兩個文件:
Views/Home/Index.aspx 與 Views/Home/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有關