运维开发网

NETMVC的URL匹配操作

运维开发网 https://www.qedev.com 2022-08-02 19:53 出处:网络
这篇文章介绍了ASP.NETMVC对URL匹配操作的实现,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 1、使用{parameter}做模糊匹配

这篇文章介绍了ASP.NETMVC对URL匹配操作的实现,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 1、使用{parameter}做模糊匹配

{parameter}:括号加任意长度的字符串,字符串不能定义为控制器和动作字母。默认为模糊匹配。

示例:{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 }

URL 1:/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 }正确。

{语言} {国家}/{控制器}/{操作}/{id}错误

// 3、不允许连续的URL参数routes.MapRoute( name: "Default3", url: "{language}-{country}/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

运行结果:


您可以通过使用前面文档中介绍的获取URL参数值的方法来获取语言和国家参数的值,因此这里不介绍如何获取它们。

4、使用*号匹配URL剩余部分


使用*匹配URL的其余部分。比如*plus放在一个表达式的末尾,末尾的URL会保存为一个字典值,以plus作为键名。

routes.MapRoute( name: "Default4", url: "{controller}/{action}/{id}/{*plus}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

输出索引方法中加号参数的值:

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匹配操作的这篇文章到此为止。希望对大家的学习有所帮助

0

精彩评论

暂无评论...
验证码 换一张
取 消