.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();

 

posted @ 2019-07-15 12:05  ken.  阅读(1138)  评论(0编辑  收藏  举报