1,Asp.net mvc 核心是:routes工作原理。
我们首先来谈谈关于urls:以前的urls很不美观,例如:http://test.com//admin/list.aspx?id=2&page=1,就会给人很不美观的感觉啊!
网路引擎解读id等参数不好啊!
所以我们要养成写url好习惯:
(1)域名好记好拼写;
(2)url尽量短,可读性强。使用位置代替参数比较好啊!这是mvc的url优点之一啊!(3)url好输入,可以方便用户好输入;
(4)url可以体现网站的结构,体现网站的逻辑结构,不体现网站的物理结构;
(5)url规律性强,用户可以自己猜出网站的构造;
(6)url固定,并且持续不变啊;
url的作用相当于网站的指挥啊!很重要。
2,Mvc的url下面的路径通常映射到类。
下面是mvc Routing介绍:(1)接受用户输入并指向Controller的Action。(2)把Controller的Action输出成URLs。
定义Routes:
Route URLs:routes.MapRoutes(“test”,”{one/tow/third}”),
URL的匹配规则:
例如:test/{controller}/{action}/{id},
可以匹配到:/test/news/display/1.
但是不能匹配:/news/display/1.
{language}-{contry}/{controll}/{action}
匹配:/Chinese-china/news/display
{controller}.{action}.{id}
匹配:/news.display.12
3,使用默认路由:添加默认匹配路由参数:
(1)无参数路由:Public ActionResult List(){return View()} 可以是: /news/list
(2)带默认参数路由:Route.MapRoute(“test”,”{controller}/{action}/{id}”,new {id=””,action=”index”});
如果我们不输入id默认为空,不输入Action默认为index。使用逆序的方法写默认值,如果不使用逆序URL将会匹配不上的。
4,url约束:就利用到了正则表达式:例如http://test.com/2010/9/29/ 对于的url约束就是:
Routes.MapRoute(“Demo”,”{year}/{month}/{day}”,new {controller=”Demo”,action=”index”},new{year=@”\d{4}”,month=@”\d{2}”,day=@”\d{2}”});
路由的匹配顺序是按照添加的顺序匹配的。
5,注册AreaRoute:
Public static void RegisterRoutes(RouteCollcetion routes)
{
routes.IgnoreRoute(“{resource}.axd/{*pathinfo}”);
AresRegistration.RegisterAllAreas();
Route.MapRoute(“default”,”{controller}/{action}/{id}”,new {controller=”home”,action=”index”,id=””});
}
注册了全区域的路由。
6,AreaRoute冲突:
如何处理冲突:
1,可以使用不同的路由命名;
2,可以添加相应的namespace。例如:
Routes.MapRoute{“default”,”{controller}/{action}/{id}”,new {controller=”home”,action=”Index”,id=””},new[]{“DemoWeb.Controllers”}}
使用DemoWeb.Controllers命名空间。
7,捕获所有参数:让route匹配任意多参数,可以使用“*”来匹配,
例如:routes.MapRoute(“CatchAllRoute”,”query/{queryname}/{*extrastuff}”,new QueryRouteHandler);
*extrastuff将会匹配query/{queryname}/后的任意多参数。不管什么字符都能匹配上。
8,停止匹配和忽略匹配:Routes.add(new Route(“{resource}.axd/{*pathinfo}”,new StopRoutingHandler()));
Routes.IgnoreRoute({resource}.axd/{*pathinfo}”);
使用停止匹配还会占有系统资源,使用忽略匹配将会跳过相应的路由,所以我们推荐使用忽略路由。
9,调试路由信息。使用Routing Debugger(第三发路由调试工具),首先我们下载此工具:下载地址:http://code.hacked.com/mvc-1.0/RouteDebug-Binary.zip
放到bin中,发布时要删除它。
Protected void Application_Start(){
RoteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
以上是Url和Routes介绍。
本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/399253,如需转载请自行联系原作者