MVC 使用正则式限定路由规则Rount

浏览 : 7644 次 Sun, 01 Jun 2014 01:16:44 GMT
这里列出一些基本的关于MVC路由规则的使用正则表达式的例子。
            /*Front*/
            //限定id只能是数字, 长度为0~11
            routes.MapRoute(
                "Archive",
                "{user}/Archive/{id}",
                new { controller = "Blog", action = "Archive", user = "", id = 0 },
                new { id = @"[\d]{0,11}" }//new { id = @"[\d]*" }//*表示任意长度
            );

            //限定page只能是数字, 长度为0~8
            routes.MapRoute(
                "Archives",
                "{user}/Page/{page}",
                new { controller = "Blog", action = "Archives", page=1 },
                new { page = @"[\d]{0,8}" }
            );

            /*Default*/
            //限定controller只能匹配  Home,Blog,About,Admin  
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }, // Parameter defaults
                new { controller =@"Home|Blog|About|Admin"}
            );

            /*Blog*/
            //限定user的长度是1~50
            routes.MapRoute(
                "Blog",
                "{user}",
                new { controller = "Blog", action = "Archives", user = "Home" },
                new { user = @"[\w]{1,50}" }
            ); 
 
测试:如果用户在浏览器输入http://localhost/bruce/Archive/1 则匹配第一个规则,正确;如果输入http://localhost/bruce/Archive/0123456789120000 或者http://localhost/bruce/Archive/abc 则会显示没有找到对应网页。简单实用的正则表达式!