認識 ASP.NET 3.5 MVC 路由 建立自訂路由

來源:互聯網
上載者:User

在這篇教程中,你會學習到如何為ASP.NET MVC應用程式添加自訂路由。你會學習如何將Global.asax檔案中的預設路由表修改為自訂路由

對於簡單的ASP.NET MVC應用程式,預設的路由表已經可以很好的完成工作了。然而,你可能發現會存在特定的路由需求。在這種情況下,你可以建立一個自訂路由。

設想一下,舉個例子,你正在建立一個部落格應用程式。你可能想要像這樣處理即將到來的請求:

/LingLing/10-28-1987

當使用者輸入這一請求,你想要返回對應於日期10/28/1987的部落格條目。為了處理這種類型的請求,你需要建立一個自訂路由。

以下代碼中的Global.asax包含了一個新的自訂路由,命名為了Blog,它處理了類似/LingLing/條目日期 這樣的請求。

using System.Web.Mvc;using System.Web.Routing;namespace MvcApplication1{    public class MvcApplication : System.Web.HttpApplication    {        public static void RegisterRoutes(RouteCollection routes)        {            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");            routes.MapRoute(                "Blog",                                           // Route name                "LingLing/{entryDate}",                            // URL with parameters                new { controller = "LingLing", action = "Entry" }  // Parameter defaults            );            routes.MapRoute(                "Default",                                              // Route name                "{controller}/{action}/{id}",                           // URL with parameters                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults            );        }        protected void Application_Start()        {            RegisterRoutes(RouteTable.Routes);        }    }}

添加到路由表中的路由順序非常重要。我們的新自訂Blog路由在現有的Default路由前面。如果你將這個順序顛倒過來,那麼Default路由將總是被調用,而不是自訂路由。

自訂Blog路由匹配任何以/Archive/作為開始的請求。因此,它匹配所有下面的URL:

/LingLing/12-25-2009

/LingLing/10-6-2004

/LingLing/apple

自訂路由將即將到來的請求映射到名為Archive的控制器,並且調用了Entry()動作。當調用Entry()方法時,條目日期作為entryDate參數進行了傳遞。

using System;using System.Web.Mvc;namespace MvcApplication1.Controllers{    public class ArchiveController : Controller    {        public string Entry(DateTime entryDate)        {            return "You requested the entry from " + entryDate.ToString();        }    }}

 

注意到代碼 中的Entry()方法接受一個DateTime類型的參數。MVC架構非常的聰明,足以自動地將URL中的條目日期轉換為DateTime值。如果URL中的條目日期參數不能轉換為DateTime,將會引發錯誤

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.