ASP.NET MVC對URL匹配操作
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參數的值,並輸出到頁面
示例代碼下載地址:點此下載
到此這篇關於ASP.NET MVC對URL匹配操作的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- ASP.NET MVC異常過濾器用法
- 詳解如何在ASP.NET Core中使用Route特性
- ASP.NET MVC實現路由功能
- ASP.NET MVC視圖尋址
- ASP.NET Core中如何實現重定向詳解