網站首頁 編程語言 正文
1、使用{parameter}做模糊匹配
{parameter}:花括弧加任意長度的字符串,字符串不能定義成controller和action字母。默認的就是模糊匹配。
例如:{admin}。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MVCURLMatch { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // 1、使用parameter做模糊匹配 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
2、使用字面值做精確匹配
字面值即一個常數字符串,外面不能有{}。這個字符串可以在大括弧與大括弧之間,也可以在最前面和最后面。
例如:admin/{controller}/{action}/{id}
URL1:/admin/home/index/1 可以與上面定義的路由匹配。
URL2:/home/index/1 不可以與上面定義的路由匹配(缺少字面量admin)
// 2、使用字面量做精確匹配 routes.MapRoute( name: "Default2", url: "admin/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
URL里面缺少admin時的運行結果:
正確的URL:
注意:這時候admin也不區分大小寫。
3、不允許連續的URL參數
兩個花括弧之間沒有任何的字面值是不可以的(兩個花括弧之間必須跟上一個固定的字母或者符合,否則無法區分是哪個參數)。
{language}-{country}/{controller}/{action}/{id} 正確
{language}{country}/{controller}/{action}/{id} 錯誤
// 3、不允許連續的URL參數 routes.MapRoute( name: "Default3", url: "{language}-{country}/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
運行結果:
可以使用上篇文件中介紹的獲取URL參數值的方式獲取language和country參數的值,這里不在講述如何獲取。
4、使用*號匹配URL剩余部分
使用*來匹配URL剩余的部分,如*plus放在一個表達式的尾部,最后尾部的URL部分會保存為plus為鍵名的字典值。
routes.MapRoute( name: "Default4", url: "{controller}/{action}/{id}/{*plus}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
在Index方法里面輸出plus參數的值:
public ActionResult Index(string plus) { string value = string.Format("plus={0}", plus); ViewData["msg"] = value; return View(); }
運行結果:
5、URL貪婪匹配
在URL表達式中有一種特殊的情況:就是URL表達式可能和實際的URL有多種匹配的情況,這時候遵守貪婪匹配的原則。
從上圖中可以看出,貪婪匹配的原則即從后往前匹配URL。
routes.MapRoute( name: "Default5", url: "{controller}/{action}/{id}/{filename}.{ext}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
在index方法里面分別獲取filename和ext參數的值,并輸出到頁面
示例代碼下載地址:點此下載
原文鏈接:https://www.cnblogs.com/dotnet261010/p/8850412.html
相關推薦
- 2023-02-05 python??fire庫的使用實例教程_python
- 2022-07-27 python?[::-1]?[::-1,::-1]的具體使用_python
- 2022-08-26 利用Python實現自動化監控文件夾完成服務部署_python
- 2023-12-09 如何使用Python核對文件夾內的文件
- 2022-08-23 python實現GATK多線程加速示例_python
- 2022-10-01 Redis+Caffeine實現分布式二級緩存組件實戰教程_Redis
- 2022-06-18 Elasticsearches之python使用及Django與Flask集成示例_python
- 2022-04-21 R語言繪圖數據可視化Ridgeline?plot山脊圖畫法_R語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支