標籤:style class blog c code tar
1. Routing : 路由
主要是比對通過瀏覽器傳來的http要求與響應適當的網址給瀏覽器。
?
| 1 |
@Html.ActionLink("關於","About","Home") |
這段代碼產生的HTML超串連:
?
| 1 |
<a href="/Home/About">關於</a> |
2. 預設情況下 網址路由規則定義在 App_Start\RouteConfig.cs文檔中。
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
namespace MvcApplication3 { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } } |
1.1 所有的ASP.NET Web 應用程式的路口點都是在 HttpApplication 的Application_Start()中。
其中 RouteTable.Routes是一個公開的靜態對象。用來儲存所有的網址路由規則集合 (RouteCollection)。
在ASP.NET MVC 中 程式會從Global.asax中的 Application_Start() 事件載入一下方法。
RouteConfig.RegisterRoutes(RouteTable.Routes); 就是在載入網路路由地址
?
| 1 2 3 4 5 6 7 8 9 10 11 12 |
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } |
1.2 RegisterRoutes 中的IgnoreRoute 方法,是用來定義不要通過網址路由處理的網址,該方法的第一個參數就是設定“不要 通過網址路由處理的URL樣式”。
?
| 1 |
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); |
所謂的"不要通過網址路由處理的網址" 就是:如果今天用戶端瀏覽器傳送過來的網址在這一條規則比對成功,那麼就不會再通過網址路由繼續比對下去。
1.3 IgnoreRoute 方法中的第一個參數 “resource”。代表RouteValue路由變數,可以取任意值
{resource}.axd代表所有的*.axd文檔網址。所有的.axd文檔通常都代表著其中一個HttpHandler .就如.ashx檔案一樣。
1.4 IgnoreRoute 方法中的第一個參數中還有一個{*pathInfo}參數。也是一個 RouteValue路由變數。
*pathInfo代表抓取全部的意思。
完整的 地址 "{resource}.axd/{*pathInfo}" 舉個例子:
若網址為 /WebResource.axd/a/b/c/d 的話, {resource}.axd 就會比對WebResource.axd。
而{*pathInfo}就會得到啊 a/b/c/d, 如果去掉* 號就只能得到 a.
1.5 MapRoute。是用來定義網址路由擴充的。
MapRoute方法的指定參數方式 已改為 ”具名參數“ 。
?
| 1 2 3 4 5 6 7 |
private void Me(int x, int y = 6, int z = 7) { //.... } Me(1, 2, 3);// 標準調用 Me(1, 5);// 等同與 Me(1,5,7) ,Z已經定義 Me(1);//也可以 |
name :參數第一Route 名稱 ,在此為 “Default”.
url : 具名參數定義。 {controller}/{action}/{id}
定義URL樣式包含三個路由參數分別為controller ,action,id
如果輸入網址 /Home/About/123, 就對應以上三個值
Default 具名參數 的預設值,當網址路由比對不到 http要求的網址時會嘗試帶入這裡定義的預設值。
?
| 1 |
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } |