程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET MVC 入門 3、Routing

ASP.NET MVC 入門 3、Routing

編輯:關於ASP.NET

在一個route中,通過在大括號中放一個占位符來定義( { and } )。當解析 URL的時候,符號"/"和"."被作為一個定義符來解析,而定 義符之間的值則匹配到占位符中。route定義中不在大括號中的信息則作為常量值 。

下面是一些示例URL:

Valid route definitions Examples of matching URL {controller}/{action}/{id} /Products/show/beverages {table}/Details.aspx /Products/Details.aspx blog/{action}/{entry} /blog/show/123 {reporttype}/{year}/{month}/{day} /sales/2008/1/5

通常,我們在Global.asax文件中的Application_Start事件中添加routes,這 確保routes在程序啟動的時候就可用,而且也允許在你進行單元測試的時候直接 調用該方法。如果你想在單元測試的時候直接調用它,注冊該routes的方法必需 是靜態的同時有一個RouteCollection參數。

下面的示例是Global.asax中的代碼,演示了添加一個包含兩個URL參數action 和 categoryName的Route對象:

public static void RegisterRoutes(RouteCollection routes)
{
//忽略對.axd文件的Route,也就是和WebForm一樣直接去訪問.axd文件
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Category", // Route 的名稱
"Category/{action}/{categoryName}", // 帶有參數的URL
new { controller = "Category", action = "Index", categoryName = "4mvc" } // 設置默認的參數
);
}
protected void Application_Start()
{
//在程序啟動的時候注冊我們前面定義的Route規則
RegisterRoutes(RouteTable.Routes);
}

在這裡我不打算再詳細去講解。以下只是簡單的說明一下。

忽略對某類URL的Routing:

//忽略對.axd文件的Route,也就是和WebForm一樣直接去訪問.axd文件

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

添加約束條件,支持正則表達式。例如我們需要對id參數添加一個必須為數字 的條件:

routes.MapRoute(
  "Default",
  "{controller}/{action}/{id}",
  new {controller="Home",action="Index",id=""},
  new{id=@"[\d]*"}//id必須為數字
);

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