MVC 路由
1、ASP.NET MVC框架中提供的URL路由机制能够使URL不必映射到应用程序的特定物理文件。
2、当用户访问基于MVC模式创建的网站时,只需要在浏览器地址栏里输入类似于下面的URL:
http://localhost/HelloWord/hello
那么ASP.NET MVC框架就自动调用控制器HelloWord的行为hello,而行为hello将返回一个特定的视图,或者是将用户重定向到另一个控制器。
之所以会产生这种现象,完全是由于ASP.NET MVC框架的路由机制在发挥作用。ASP.NET MVC框架利用路由是URLs与控制器和行为对应起来。路由解析包含在URL中的变量,并自动地把变量作为参数传递到控制器的行为。
3、URL路由与非URL路由的区别
①作用不同:URL路由可以用于描述用户行为,而非URL路由只映射到物理文件,不包含任何意义。
②URL重写模式不同
4、URL路由机制
①当用户发来请求时,UrlRoutingModule会把这个请求注册在RouteTable中的路由中进行匹配;
②如果路由匹配请求,Routing模块将启动IRouteHandler接口;
③Routing模块调用IRouteHandler接口的GetHandler方法,这个方法将会返回MvcHandler;
④MvcHandler执行IHttpHandler接口,这个接口将负责实例化控制器,从而执行相应的方法以回应请求。
通过以上处理请求的过程,可以发现在URL路由中,需要事先定义URL路由模式,也就是在RouteTable中定义好路由匹配的模式,ASP.NET MVC框架将完成剩余的工作。
5、定义路由
创建一个ASP.NET MVC应用程序后,路由将默认定义在两个地方:第一个地方就是Web.config文件,另一个是Globe.asax文件。
当一个MVC应用程序首次运行时,会调用Application_Start()方法,此方法随后调用RegisterRoutes()方法创建路由表(RouteTable)。
路由的添加可以利用类RouteCollection的Add方法和MapRoute方法来完成,使用Add方法添加路由的代码如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute( //使用MapRoute不用新建Route对象
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "HelloWorld", action = "Index", id = UrlParameter.Optional }
);
routes.Add(new Route //使用Add方法添加路由需要新建Route对象
"Category/{action}/{categoryName}"//定义路由方式
,new CategoryRouteHandler()//默认路由
);
}
MVC 路由的更多相关文章
- ASP.NET MVC 路由(一)
ASP.NET MVC路由(一) 前言 从这一章开始,我们即将进入MVC的世界,在学习MVC的过程中在网上搜索了一下,资料还是蛮多的,只不过对于我这样的初学者来看还是有点难度,自己就想看到有一篇引导性 ...
- ASP.NET MVC 路由(二)
ASP.NET MVC路由(二) 前言 在上一篇中,提及了Route.RouteCollection对象的一些信息,以及它们的结构所对应的关系.按照处理流程走下来还有遗留的疑问没有解决这个篇幅就来讲 ...
- ASP.NET MVC 路由(三)
ASP.NET MVC路由(三) 前言 通过前两篇的学习会对路由系统会有一个初步的了解,并且对路由系统中的Url规则有个简单的了解,在大家的脑海中也有个印象了,那么路由系统在ASP.NETMVC中所处 ...
- ASP.NET MVC 路由(四)
ASP.NET MVC路由(四) 前言 在前面的篇幅中我们讲解路由系统在MVC中的运行过程以及粗略的原理,想必看过前面篇幅的朋友应该对路由有个概念性的了解了,本篇来讲解区域,在读完本篇后不会肯定的让你 ...
- ASP.NET MVC 路由(五)
ASP.NET MVC 路由(五) 前言 前面的篇幅讲解了MVC中的路由系统,只是大概的一个实现流程,让大家更清晰路由系统在MVC中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的 ...
- MVC路由探寻,涉及路由的惯例、自定义片段变量、约束、生成链接和URL等
引子 在了解MVC路由之前,必须了解的概念是"片段".片段是指除主机名和查询字符串以外的.以"/"分隔的各个部分.比如,在http://site.com/Hom ...
- Asp.Net MVC 路由 - Asp.Net 编程 - 张子阳
http://cache.baiducontent.com/c?m=9d78d513d98316fa03acd2294d01d6165909c7256b96c4523f8a9c12d522195646 ...
- ASP.NET MVC 路由进阶(之二)--自定义路由约束
3.自定义路由约束 什么叫自定义路由约束呢?假如路由格式为archive/{year}/{month}/{day},其中year,month,day是有约束条件的,必须是数字,而且有一定范围. 这时候 ...
- 自定义MVC路由配置
首先我用MVC4新增一个订单查看的功能 1.创建控制器OrderController namespace MvcApplication3.Controllers { public class Orde ...
- AngularJS html5Mode与ASP.NET MVC路由
AngularJS html5Mode与ASP.NET MVC路由共存 前言 很久之前便听说AngularJS,非常酷,最近也比较火,我也在持续关注这个技术,只是没有认真投入学习.前不久公司找我们部门 ...
随机推荐
- 关于用mybatis调用存储过程时的入参和出参的传递方法
一.问题描述 a) 目前调用读的存储过程的接口定义一般是:void ReadDatalogs(Map<String,Object> map);,入参和出参都在这个map里 ...
- 记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客!
在开始正文之前,请帮忙为当前 排名前 10 唯一的 .Net 开源软件 FineUI 投一票: 投票地址: https://code.csdn.net/2013OSSurvey/gitop/code ...
- CUDA1.1-函数类型限定符与变量类型限定符
这部分来自于<CUDA_C_Programming_Guide.pdf>,看完<GPU高性能变成CUDA实战>的第四章,觉得这本书还是很好的,是一种循序渐进式的书,值得看,而不 ...
- Markdown会干掉Html吗?
Markdown会干掉Html吗? 很明显,MarkDown正在已一种比病毒还快的速度传播着,量子的机器人语言也是深受其启发,当然了,在这个东西没搞出来之前,MarkDown就能干很多事情,比如在线编 ...
- MATLAB中的set函数
1.MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值.例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-' .':'.'-.'.'- ...
- Uwp Windows10获取设备位置(经纬度)
先在Package.appxmanifest中配置位置权限 2. 创建LocationManager类 using System; using System.Collections.Generic; ...
- 60-chmod 修改文件的权限
修改文件的权限 chmod [options] who operator permission file-list (符号模式) chmod [options] mode file-list (绝对模 ...
- [转]关于jquery中html()、text()、val()的区别
原文地址:http://www.cnblogs.com/xiaolifeidao/p/3715830.html .html()用为读取和修改元素的HTML标签 对应js中的innerHTML . ...
- iOS开发--音乐文件播放工具类的封装(包含了音效的封装)
一.头文件 #import <Foundation/Foundation.h> #import <AVFoundation/AVFoundation.h> @interface ...
- SVN_限制注释长度
一.说明 svn服务器上每个项目都会有单独一个文件夹,文件夹下有一个hooks文件夹,可以在pre-commit添加内容限制注释输入 项目t1的下的hooks文件夹 二.操作步骤 注意:修改的 ...