C# MVC匹配URL多樣性和正則表示式用法
阿新 • • 發佈:2019-02-08
public ActionResult Login()//VirtualPathData可獲取瀏覽器響應URL { VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, "Default", new RouteValueDictionary(new { controller = "Users", action = "Login" })); return View(); } using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MvcMySchool { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes)//多種路由匹配和正則表示式用法 { //routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "www.hetengfei.com/{controller}/{action}" //使用字面值做精確匹配 ); routes.MapRoute( name: "Default1", url: "{state}-{are}/{controller}/{action}/{id}" //使用不連續的URL引數 ); routes.MapRoute( "Default2", "{controller}/{action}/{foo}xyz{bar}" // 使用不連續的URL引數 ); routes.MapRoute( name: "Default3", url: "{controller}/{action}/{id}" //正常匹配 ); routes.MapRoute( "Default4", "{controller}/{action}/{year}/{month}/{day}", new { year = @"\d{4}", month = new MonthConstraint(), day = @"\d{2}" } // 帶有正則表示式 URL ); // 引數預設值 routes.MapRoute( name: "Default5", url: "{controller}/{action}/{id}/{*pind}", //使用*匹配剩餘部分URL defaults: new { controller = "Users", action = "Login", id = UrlParameter.Optional } ); } } public class MonthConstraint : IRouteConstraint { public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { if (values["month"].ToString().Length == 2 && Convert.ToInt32(values["month"]) >= 1 && Convert.ToInt32(values["month"]) <= 12) return true; return false; } } }