大家好,又见面了,我是你们的朋友全栈君。
路由
ASP.NET MVC Route—转发请求:
1.客户端发起请求
2.到达IIS
3.转发到程序集
4.经过一个路由匹配–转发到匹配的控制器中
5.匹配的action去处理
RouteConfig中如果有多个路由,从上到下进行匹配,
按照路由url中的正则表达式进行匹配,
在命中url后找不到Controller或View则使用defaults中的默认参数
public static void RegisterRoutes(RouteCollection routes)
{
//忽略路由: XXXX.axd/XXXXX 不去匹配路由
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//在MVC之前,WebFrom开发,IIS通过aspx后缀进行匹配
//后来MVC出现之后,通过IIS补丁,追加后缀进行识别匹配
//IIS升级,不需要补丁
//于是需要忽略掉带axd的请求
//固定路由
routes.MapRoute(
name: "about",
url: "about",
defaults: new {
controller = "Home", action = "About", id = UrlParameter.Optional }
);
//修改控制器的名称
routes.MapRoute(
name: "Test",
url: "Test",
defaults: new {
controller = "First", action = "Index", id = UrlParameter.Optional }
);
// http://localhost:52176/First/String_2021_12_02 //ToFirst
// 匹配路由ToFirst,因为格式符合{controller}/{action}_{year}_{month}_{day}
routes.MapRoute(
name: "ToFirst",
url: "{controller}/{action}_{year}_{month}_{day}",
defaults: new {
controller = "First", action = "String", id = UrlParameter.Optional },
constraints: new
{
year = @"\d{4}",
month = @"\d{1,2}",
day = @"\d{2}"
}
);
//http://localhost:52176/First/String?year=2021&month=12&day=02 //Defult
//http://localhost:52176/First/String?year=2021&month=6&day=02 //Defult
//匹配路由Defult,因为格式"String?year=2021&month=12&day=02"作为一个参数
//路由规则是key-value的形式
//如果路由是多个,name的值不能相同,value:url url--正则匹配
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162940.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...