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匹配操作的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • ASP.NET实现MVC中获取当前URL、controller及action的方法

    本文实例讲述了ASP.NET实现MVC中获取当前URL.controller及action的方法.分享给大家供大家参考,具体如下: URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟目录名+页面名+参数: string url=Request.RawUrl; 或 string url=Request.Url.PathAndQuery; [3]获取 虚拟

  • ASP.NET MVC中URL地址传参的两种写法

    一.url地址传参的第一种写法 1.通过mvc中默认的url地址书写格式:控制器/方法名/参数 2.实例:http://localhost:39270/RequestDemo/Index/88,默认参数名为id所以名称为id. 如果使用其他名称,后台是无法读取的会报错 二.url地址传参的第二种写法 1.使用?加参数名=参数值的写法,如果有多个参数使用&来连接 http://localhost:39270/RequestDemo/Index?id=88&name=%E5%BC%A0%E4%

  • ASP.NET通过更改Url进行页面传值的实现代码

    这里,通过假数据,手动创建的一个类,然后创建的一个集合,放入下拉框,选好值以后,点确定 会在另一个页面产生对应的id 创建一个类: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WebApplication1 { public class Dept { public int Id { get; set; } public string DeptName

  • 在asp.net中获取当前页面的URL的方法(推荐)

    获取Url的方法有两种,通过后台获得或通过前面js获得,如下: 1.通过C#获取当前页面的URL string url = Request.Url.AbsoluteUri; //结果: http://www.jb51.net/web/index.aspx string host = Request.Url.Host; //结果:www.jb51.net string rawUrl = Request.RawUrl; //结果:/web/index.aspx string localPath =

  • ASP.NET实现URL映射的方法

    URL映射是ASP.NET 2.0中提供的新特性.URL映射技术帮助我们将一个特定URL映射为另一个URL.为了帮助理解,我们假设你在站点有一个叫Homepage.aspx的页面来访问主页,所有的用户也都用这个页面来访问你的主页.但由于某些原因,你要将主页改为OriginalHome.aspx.此时使用URL映射让你可以映射到新页面,而不必通知用户. 如果我们设置了URL映射,那么任何用户在URL栏输入Homepage.aspx时,调用的都是OriginalHome.aspx. 深入概念: 让我

  • asp.net中匹配URL网址的正则表达式

    %<本人做的是asp.net的项目,内容是阻止一个文本框中的某些URL>% 首先,正则表达式: String check = @"((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?"; 关于该正则表达式的说明: ①:该正则表达式匹

  • ASP.NET获取URL方法汇总

    //获取完整url (协议名+域名+站点名+文件名+参数) string fullUrl = Request.Url.ToString(); //获取客户端请求的URL信息(不包括主机和端口) string rawUrl = Request.RawUrl; //获取站点名+页面名 string absolutePath = Request.Url.AbsolutePath; //获取主机部分 string urlHost = Request.Url.Host; //获取参数部分 string u

  • ASP.NET Core中如何使用表达式树创建URL详解

    表达式树(Expression Tree) 表达式树是不可执行的代码,它只是用于表示一种树状的数据结构,树上的每一个节点都表示为某种表达式类型,大概有25种表达式类型,它们都派生自Expression类.创建表达式树具体有两个优势: 1.对表达式树的代码进行编辑修改,使表达式树中的代码变成动态代码,根据不同的数据库修改树上的代码逻辑从而达到动态切换数据库查询语句的目的,用表达式树可以动态构建针对不同数据库的查询语句. 2.完成类似反射访问未知对象的属性,通过动态构造表达式树,生成委托. 当我们在

  • ASP.NET MVC从控制器中获取URL值

    从控制器中获取URL的值有三种方式: 1.使用Request.QueryString[] 例如: string value = Request.QueryString["BookId"].ToString(); 注意:Request.QueryString只能获取URL中以?分割的参数值. 案例演示: action方法代码如下: #region 1.通过Request.QueryString的方式获取URL的值 public ActionResult Index() { // 获取路由

  • 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 MVCURLMatc

  • spring mvc url匹配禁用后缀访问操作

    spring mvc url匹配禁用后缀访问 在spring mvc中默认 访问url 加任意后缀名都能访问 比如:你想访问 /login ,但是通过 /login.do /login.action /login.json 都能访问 通常来说可能没有影响,但对于权限控制,这就严重了. 权限控制通常有两种思路: 1)弱权限控制 允许所有url通过,仅对个别重要的url做权限控制.此种方式比较简单,不需要对所有url资源进行配置,只配置重要的资源. 2)强权限控制 默认禁止所有url请求通过,仅开放

  • ASP.NET MVC用存储过程批量添加修改数据操作

    用Entity Framework 进行数据库交互,在代码里直接用lamda表达式和linq对数据库操作,中间为程序员省去了数据库访问的代码时间,程序员直接可以专注业务逻辑层的编写.但是对于比较复杂的表关系关联查询或者修改就比较费劲了.通常可以采用的方式是用EF执行SQL语句或者"存储过程",特别是执行复杂批量任务,当然也可以在MVC底层用ADO.NET,这里就不多说了.怎么做批量呢?这里讲讲在EF下用存储过程批量添加修改数据. 需求是这样的:需要批量添加修改产品类别的投放任务数额,每

  • ASP.NET MVC自定义操作过滤器

    目录 一.操作过滤器 1.定义 2.案例 2.1.创建自定义操作过滤器 2.2.新建控制器 二.结果过滤器 1.定义 2.案例 三.案例 1.记录操作 1.1.创建实体类 1.2.创建日志类 1.3.修改操作过滤器类 2.实现权限控制功能 一.操作过滤器 1.定义 操作过滤器用于实现IActionFilter接口以及包装操作方法执行.IActionFilter接口声明两个方法:OnActionExecuting和OnActionExecuted.OnActionExecuting在操作方法之前运

  • ASP.NET MVC从控制器中获取URL值

    从控制器中获取URL的值有三种方式: 1.使用Request.QueryString[] 例如: string value = Request.QueryString["BookId"].ToString(); 注意:Request.QueryString只能获取URL中以?分割的参数值. 案例演示: action方法代码如下: #region 1.通过Request.QueryString的方式获取URL的值 public ActionResult Index() { // 获取路由

  • ASP.NET MVC 微信JS-SDK认证

    ASP.NET MVC微信JS-SDK认证,具体内容: 写在前面 前阵子因为有个项目需要做微信自定义分享功能,因而去研究了下微信JS-SDK相关知识. 此文做个简单的记(tu)录(cao)... 开始 所有的东西都从文档开始:微信JSSDK说明文档 项目需要用到的是分享接口不过使用微信JS-SDK之前,需要做JS接口认证. 认证如下: 步骤一:绑定域名 步骤二:引入JS文件 步骤三:通过config接口注入权限验证配置 步骤四:通过ready接口处理成功验证 步骤五:通过error接口处理失败验

  • 利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表

    jQuery dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序.浏览器分页.服务器分页.查询.格式化等功能.dataTables 官网也提供了大量的演示和详细的文档进行说明,为了方便使用,这里进行详细说明. 去官网:https://www.datatables.net/ 下载最新版本是v1.10.12. 在页面引入: <link rel="stylesheet" href="~/Content_Admin/css/boots

  • 基于asp.net MVC 应用程序的生命周期(详解)

    首先我们知道http是一种无状态的请求,他的生命周期就是从客户端浏览器发出请求开始,到得到响应结束.那么MVC应用程序从发出请求到获得响应,都做了些什么呢? 本文我们会详细讨论MVC应用程序一个请求的生命周期,从一个控件到另一个控件是怎样被处理的.我们还会详细介绍一下整个请求的生命周期中,用到的相关组件.因为在平常的开发过程中,我们可能知道怎样去使用MVC框架来处理相关的请求,大部分的时候我们只是在controller和action方法之间做相关的处理,对于真正内在的运行机制可能不是很了解.其实

随机推荐