ASP.NET/C# MVC 路由详解

时间:2024-03-31 22:53:53

使用路由的好处:

  • 1、能够根据系统需求,灵活的划分请求规则(不同模块请求的URL是不一样的)
  • 2、屏蔽物理路径,提高系统的安全性,以上情况是无法根据URL分析视图文件在站点目录中的位置
  • 3、有利于搜索引擎优化,可以将URL请求统一规范,以后维护中,如果页面发生变化,URL可以保持不变

路由系统主要职责:将各种URL请求转发给控制器处理

路由的双向系统功能:

URL正向映射到Controller和Action:根据用户输入的URL触发对应控制器并调用动作方法

Controller和Action还可以反向映射并构造URL:根据控制器和行为构造出URL供用户使用

路由定义规则和应用

路由URL匹配要求

  • 1、字面量:必须严格匹配,即实际请求中的字符串和路由模式中的字面量字符必须要完全一致
  • 2、大小写:URL模式匹配的时候不区分大小写
  • 3、常量:没有包含在大括号内的信息被作为常量对待

URL模式匹配原理

  • 规则1:字面量必须严格匹配
  • 规则2:URL模式不区分大小写

多路由匹配的选择:如果一个URL能够在多个路由中匹配,则默认使用第一个匹配的路由

UrlPrameter.Optional参数的作用:该参数可以作为路由参数的默认值
当需要让"/Home/Index"或"/Home"能正常匹配,但又不希望赋一个无意义的值,可以使用该参数

1.提到{controller}/{action}

必不可少:在一个实际的MVC系统中,{controller}/{action}必不可少,如果缺少就会出现找不到路径而出错

约定规则:这个占位符是MVC里面约定的,并且会被解析成控制器和对应的方法

位置灵活:这两个约定的占位符可以在任意位置

2.其他占位符

仅仅是占位:比如{aa}/{bb}/{cc},这里面的aa不能被解析成控制器,bb也不能解析成动作方法

默认要求:一个路由中,如果没有规定{controller}/{action},或者只是规定其中之一,则没有规定的部分将使用默认值

3、匹配顺序

  • 优先使用:多个路由匹配一个URL,则优先匹配的会使用
  • 尽量避免:定义多个路由时,尽量避免出现多匹配

4.*匹配(剩余匹配)

ASP.NET/C# MVC 路由详解

贪婪匹配

ASP.NET/C# MVC 路由详解