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参数的值,并输出到页面
示例代码下载地址:https://pan.baidu.com/s/1q_tXchAgHICoMn3q4oBpQA
MVC教程三:URL匹配的更多相关文章
- ASP.NET MVC教程三:ASP.NET MVC部署方式
ASP.NET MVC编写的程序需要部署到IIS上面才能进行访问,部署方式分为两种. 一.直接用源代码部署 第一种方式可以直接使用源代码进行部署.部署步骤: 1.新建网站 在IIS里面选择网站,然后右 ...
- 2017.3.31 spring mvc教程(三)拦截器
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- Spring MVC 教程,快速入门,深入分析
http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: ...
- 【ASP.NET MVC 牛刀小试】 URL Route
例子引入 先看看如下例子,你能完全明白吗? using System; using System.Collections.Generic; using System.Linq; using Syste ...
- Spring MVC 教程,快速入门,深入分析[1-11]
资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 作者:赵磊 博客:http://elf8848.iteye.com ...
- [转]Spring MVC 教程,快速入门,深入分析
原文地址:http://elf8848.iteye.com/blog/875830 目录 一.前言 二.spring mvc 核心类与接口 三.spring mvc 核心流程图 四.spring mv ...
- Spring MVC教程——检视阅读
Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...
- ASP.NET MVC 路由(三)
ASP.NET MVC路由(三) 前言 通过前两篇的学习会对路由系统会有一个初步的了解,并且对路由系统中的Url规则有个简单的了解,在大家的脑海中也有个印象了,那么路由系统在ASP.NETMVC中所处 ...
随机推荐
- Android 中发送短信
import android.net.Uri; //调用Android系统API发送短信 Uri uri = Uri.parse("smsto:" + strSmsPhone_va ...
- PLSQL_标准游标类型的解析(概念)
2014-06-02 Created By BaoXinjian
- ADF_ADF Framework基本概念(概念)
2014-01-01 Created By BaoXinjian
- oracle关键字大全--注意不要乱用哦
遇到怀疑可能使用了关键字,就来搜一搜吧 ... Oracle 关键字(保留字) 大全 其实这个东西可以在oracle 上输入一个sql语句就可以得到: select * from v$reserved ...
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- linux的fork()函数具体解释 子进程复制父进程什么
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h ...
- Multiple Regression
Multiple Regression What is multiple regression? Multiple regression is regression analysis with mor ...
- 【Android】19.3 ContentProvider及安卓进一步封装后的相关类
分类:C#.Android.VS2015: 创建日期:2016-03-08 一.简介 ContentProvider:内容提供程序. Android的ContentProvider与.NET框架的EF ...
- android studio - 暂停AndroidStudio中的Git
解决办法 AndroidStudio 打开 Setting>Plugins 找到Git Integer 取消插件(将右边钩钩去掉) restart AndroidStudio done
- python格式化
1.百分号格式如下: %[(name)] [flags] [.precision] typecode (name):可选,获取指定key的值flags:可选,:width,占有宽度.precision ...