(ASP.NET MVC学习)url Routing 使用与介绍

Route就是路由的意思,它的工作在MVC中就是按照一定的规则解析URL,Routing也并不是ASP.NET MVC框架下的组件,是独立的,也就是说不一定只有在ASP.NET MVC下才能使用URL Routing。

Routing在ASP.NET MVC中的作用,asp.net mvc是靠Routing进行驱动使用的,并且根据在程序中定制的Routing规则解析url,在URL中可以指定的MVC中的Controller,Action,参数。

学习Routing 的定义。Routing在解析URL的时候,符号”/”和“.”被作为一个定义符来解析,而定义符之间的值则匹配到Routing中的占位符,Routing中是通过一对大括号来表示一个占位符,若无这对大括号将是常量值。例如:controller/{action}/{id}

一般情况我们都是在Global.asax文件中的Application_Start事件中添加Route规则,这样就可以在Web应用程序一执行就可以解析URL。

直接看代码吧。

var DemoDict = new RouteValueDictionary();
DemoDict["controller"] = "Home";//指定Controller默认值
DemoDict["action"] = "Index";//指定默认的Action
DemoDict["id"] = 0;

var ConstraintRouteDict = new RouteValueDictionary();
ConstraintRouteDict["controller"]=@"^\w+";//只允许是字母
ConstraintRouteDict["action"]=@"^\w+";//只允许是字母
ConstraintRouteDict["id"] = @"^\d+";//只允许是整数

var DemoRoute = new Route("{controller}/{action}/{id}", DemoDict, ConstraintRouteDict, new MvcRouteHandler());
//用MvcRouteHandler来处理捕捉到的URL,
//要将捕捉到的URL用来调用ASP.NET MVC应用程序就要用这个RouteHandler。
//如果URL Routing要用来处理其它的应用程序则就需要使用其它的RouteHandler或自定义RouteHandler

 

这种方式创建一个完整的规则,但是如果只用在MVC框架中就显得麻烦,代码还是多,在ASP.NET MVC框架中有一个RouteCollectionExtensions

类,类中有一个MapRoute()方法,可以很方便的创建Routing规则。

写法如下:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "o" },
    new { controller="@",action=@"",id=@""}
);

另外要使用URL Routing 一定要在Web.config文件一定配置UrlRoutingModule,不然URL Routing将不可以使用,另外如果有多个Routing规则,程序是默认按照规则定义的前后顺序进行匹配规则的,如果需要知道传递过来的URL匹配到那些规则,可以使用RouteDebugger进行调试。

posted @ 2010-01-28 19:50  longgel  阅读(1348)  评论(0编辑  收藏  举报