一、什么是UrlRouting

你可以使用UrlRouting来配置一些URL的映射,使用户可以按你的规则来访问网站. 
使用UrlRouting,一定要规定URL模式,它包括一个位置标识,它将在你请求网页时按这个规则返回给你内容. 当然,这个创建的规则完全是由你自己定义的. 
上回说道如何访问index.aspx及about.aspx:
但是http://localhost/Views/Home/Index.aspx和 http://localhost/Views/Home/About.aspx这两个地址并无法直接访问以下两个文件: 
Views/Home/Index.aspx 与 Views/Home/About.aspx
这是怎么回事呢,那我们要怎样才能访问呢 ? 
答案是: 
http://localhost/Home和http://localhost/Home/About 
这是为什么呢?
这就是UrlRouting的功能,而这个功能的配置是由,URL的请求规则定义的,这个规则定义在Global.asax.cs中定义。

二、基本UrlRouting规则的定义

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing; namespace MvcApplication2
{
/// <summary>
/// 还是老规矩,按序号看
/// </summary>
// Note: For instructions . enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
// 4.注意: 将1标的规则更改为 "{controller}.mvc/{action}/{id}" 即可
// 自行支持 IIS6 and IIS7 两种模式
// 笔者注:一般的虚拟主机不支持.mvc,.aspx也要检查文件存在
// 变通方法为可以将.mvc换成.ashx或.asbx public static void RegisterRoutes(RouteCollection routes)
{
//5、此路径不受后面规则控制
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//1、大家可以回忆一下Controller和Action的定义
//因为MVC与传统Aspx的最大不同就是访问是
//访问的Controller.Action即某类下的一个函数而不是aspx文件,
//要展现给用户哪一个aspx文件是由Controller决定的(即默认的同名规则)
//这个是文件默认自带的UrlRouting规则,是将Controller/Action/id的访问
//模式指向对应的Controller及Action
routes.MapRoute(
"Default", // Route 名称
"{controller}/{action}/{id}", // URL参数
new { controller = "Home", action = "Index", id = "" }
// 2、参数的默认值也就是如果各部分为空的话访问
//HomeController下的Index这个Action
);
}
protected void Application_Start()
{ //3.这个没什么好讲了,就是在应用程序启动时初始化它
RegisterRoutes(RouteTable.Routes);
}
}
}
注意这一点ASP.NET MVC 中URLRouting只与Controller/Action有关

三、UrlRouting解决的问题

UrlRouting是为了让Url更简短更有意义才出现的,例如:
post.aspx?year=1999&month=3&day=8 的参数URL变为 
/post/1999/3/8/ 这样的简短漂亮且有意义的URL
而类似home/about.aspx?id=12,以示例中的Global.asax.cs中定义的{controller}/{action}/{id}规则为列 
/Home/About/12其实就是访问 
Controller="Home" Action="About" 它的一个QueryString参数为 id="12" 

四、UrlRouting相关资料

Asp.net Mvc 第二回 UrlRouting的更多相关文章

  1. asp.net MVC 应用程序的生命周期

    下面这篇文章总结了 asp.net MVC 框架程序的生命周期.觉得写得不错,故转载一下. 转载自:http://www.cnblogs.com/yplong/p/5582576.html       ...

  2. ASP.NET MVC 简介

    1. ASP.NET MVC 是什么? ASP.NET MVC是微软官方提供的以MVC模式为基础的ASP.NET Web应用程序(Web Application)框架,它由Castle的MonoRai ...

  3. ASP.NET MVC运行机制源码剖析

    我们都知道ASP.NET首先是从Global.aspx中开始运行的, 在Application_Start()中添加路由映射后, 就由URLRouting组件创建IRouteHandler并执行, 在 ...

  4. Asp.net MVC生命周期

    Asp.net应用程序管道处理用户请求时特别强调"时机",对Asp.net生命周期的了解多少直接影响我们写页面和控件的效率.因此在2007年和2008年我在这个话题上各写了一篇文章 ...

  5. 从抽象谈起(三):AOP编程和ASP.NET MVC

    AOP(Aspect oriented programming)面向切面编程.说成切面不容易理解,代码哪里有切面?又不是三维物体.概念不管,我们从其思想来理解这个名词吧. AOP的主要思想是把相同.相 ...

  6. [收藏]Asp.net MVC生命周期

    一个HTTP请求从IIS移交到Asp.net运行时,Asp.net MVC是在什么时机获得了控制权并对请求进行处理呢?处理过程又是怎样的? 以IIS7中asp.net应用程序生命周期为例,下图是来自M ...

  7. ASP.NET MVC HtmlHelper用法集锦

    ASP.NET MVC HtmlHelper用法集锦 在写一个编辑数据的页面时,我们通常会写如下代码 1:<inputtype="text"value='<%=View ...

  8. asp.net MVC 应用程序的生命周期(下)

    看看上面的UrlRoutingModule源码里面是怎么实现Init方法的,Init()方法里面我标注红色的地方: application.PostResolveRequestCache += new ...

  9. Asp.net Mvc 请求是如何到达 MvcHandler的——UrlRoutingModule、MvcRouteHandler分析,并造个轮子

    这个是转载自:http://www.cnblogs.com/keyindex/archive/2012/08/11/2634005.html(那个比较容易忘记,希望博主不要生气的) 前言 本文假定读者 ...

随机推荐

  1. HJA的异或值

    HJA的异或值 查看 提交 统计 提问 总时间限制:  20000ms 内存限制:  512000kB 描述 形态形成场(Morphogenetic Field)假说是Rupert Sheldrake ...

  2. [BZOJ 3282] Tree 【LCT】

    题目链接:BZOJ - 3282 题目分析 这道题是裸的LCT,包含 Link , Cut 和询问两点之间的路径信息. 写代码时出现的错误:Access(x) 的循环中应该切断的是原来的 Son[x] ...

  3. A simple brute force problem.

    hdu4971:http://acm.hdu.edu.cn/showproblem.php?pid=4971 题意:给你n个项目,每完成一个项目会有一定的收益,但是为了完成某个项目,要先学会一些技能, ...

  4. 自定义JSON配置器

    比如要写个专门处理float类型的方法,然后注册到JSON配置器中,具体如下: 配置器代码如下: import java.math.RoundingMode; import java.text.Num ...

  5. MySQL的备份与恢复

    Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# ...

  6. HashMap循环遍历方式及其性能对比

    主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论.   1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为 ...

  7. Spark(Hive) SQL中UDF的使用(Python)

    相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...

  8. 最详细在Windows安装Xamarin.iOS教程

    最详细在Windows安装Xamarin.iOS教程 来源:http://www.cnblogs.com/llyfe2006/articles/3098280.html 本文展示了如何设立Xamari ...

  9. Android学习笔记(七)两个Fragment简单跳转示例

    在前两篇博文中分别介绍了Fragment得基础和Fragment的生命周期,然而说了这么多Fragment到底怎么用呢以及我们为什么要使用Fragment?本篇博文将主要探讨这两个问题,首先说下在AP ...

  10. GPUImage实现过程

    GPUImage就是一个函数的类库,用于对图片实现滤镜的效果. 下面是实现一个最简单的GPUImage的程序和讲解: 首先新建一个项目,导入GPUImage类库(导入过程在我的另一个博客里面有写). ...