.Net MVC 路由配置


一、所有路由都存入RouteCollection類型的靜態變量中

namespace System.Web.Routing
{
    //
    // 摘要:
    //     存儲應用程序的 URL 路由。public class RouteTable
    {//
        // 摘要:
        //     獲取從 System.Web.Routing.RouteBase 類派生的對象的集合。
        //
        // 返回結果:
        //     包含集合中的所有路由的對象。
        public static RouteCollection Routes { get; }
    }
}

  注冊路由實際上是往Routes添加Route實例(System.Web.Routing.Route --繼承System.Web.Routing.RouteBase)

二、Route構造函數的5個參數

        //     獲取或設置為 URL 參數指定有效值的表達式的詞典。
        public RouteValueDictionary Constraints { get; set; }
        //     獲取或設置傳遞到路由處理程序但未用於確定該路由是否匹配 URL 模式的自定義值。
        public RouteValueDictionary DataTokens { get; set; }
        //     獲取或設置要在 URL 不包含所有參數時使用的值。
        public RouteValueDictionary Defaults { get; set; }
        //     獲取或設置處理路由請求的對象。
        public IRouteHandler RouteHandler { get; set; }
        //     獲取或設置路由的 URL 模式。
        public string Url { get; set; }

  必需的是:Url、RouteHandler ,如:

Route route = new Route("{controller}/{action}/{id}", new MvcRouteHandler());

  DataTokens:常用於配置區域、命名空間(可多個)。注:key、value都不區分大小寫(建議:key小寫)

            RouteValueDictionary dataTokens = new RouteValueDictionary();
            dataTokens.Add("area", "MyArea");
            dataTokens.Add("namespaces", new string[] {"MyApp.Areas.MyArea.Controllers"});

三、區域路由其它配置方式(代碼中添加區域時VS自動添加了類 RouteTestAreaRegistration)

    public class RouteTestAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "RouteTest";
            }
        }
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "RouteTest_default",
                "RouteTest/{controller}/{action}/{id}",
                new { controller = "Yes", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

  程序啟動入口(Application_Start)調用以下方法注冊:

AreaRegistration.RegisterAllAreas();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM