本文摘自PHP中文网,作者黄舟,侵删。
[ASP.NET
MVC 小牛之路]07 - URL Routing
我们知道在ASP.NET Web Forms中,一个URL请求往往对应一个aspx页面,一个aspx页面就是一个物理文件,它包含对请求的处理。
而在ASP.NET MVC中,一个URL请求是由对应的一个Controller中的Action来处理的,由URL Routing来告诉MVC如何定位到正确的Controller和Action。
笼统的讲,URL Routing包含两个主要功能:解析URL 和 生成URL,本文将围绕这两个大点进行讲解。
本文目录
URL Routing 的定义方式
让我们从下面这样一个简单的URL开始:
http://mysite.com/Admin/Index
在域名的后面,默认使用“/”来对URL进行分段。路由系统通过类似于 {controller}/{action} 格式的字符串可以知道这个URL的 Admin 和 Index 两个片段分别对应Controller和Action的名称。
默认情况下,路由格式中用“/”分隔的段数是和URL域名的后面的段数是一致的,比如,对于{controller}/{action} 格式只会匹配两个片段。如下表所示:
URL路由是在MVC工程中的App_Start文件夹下的RouteConfig.cs文件中的RegisterRoutes方法中定义的,下面是创建一个空MVC项目时系统生成的一个简单URL路由定义:
1 2 3 4 5 6 7 8 9 |
|
静态方法RegisterRoutes是在Global.asax.cs文件中的Application_Start方法中被调用的,除了URL路由的定义外,还包含其他的一些MVC核心特性的定义:
1 2 3 4 5 6 7 8 |
|
RouteConfig.RegisterRoutes方法中传递的是 RouteTable 类的静态 Routes 属性,返回一个RouteCollection的实例。其实,“原始”的定义路由的方法可以这样写:
1 2 3 4 5 |
|
创建Route对象时用了一个URL格式字符串和一个MvcRouteHandler对象作为构造函数的参数。不同的ASP.NET技术有不同的RouteHandler,MVC用的是MvcRouteHandler。
这种写法有点繁琐,一种更简单的定义方法是:
1 2 3 4 |
|
这种方法简洁易读,一般我们都会用这种方法定义路由。
示例准备
作为演示,我们先来准备一个Demo。创建一个标准的MVC应用程序,然后添加三个简单的Controller,分别是HomeController、CustomerController和AdminController,代码如下:
HomeController
CustomerController
AdminController
在 /Views/Shared 文件夹下再给这三个Controller添加一个共享的名为 ActionName.cshtml 的 View,代码如下:
ActionName.cshtml
我们把RouteConfig.cs文件中项目自动生成的URL Rounting的定义删了,然后根据前面讲的路由定义知识,我们自己写一个最简单的:
1 2 3 4 |
|
程序运行,URL定位到 Admin/Index 看看运行结果:
这个Demo输出的是被调用的Controller和Action名称。
给片段变量定义默认值
相关阅读 >>
[asp.net mvc 小牛之路]08 - area 使用
asp.net使用x509certificate2出现的一些问题的解决方法分享(图)
分享asp.net学习笔记(10)webpages email
更多相关阅读请进入《asp.net》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。