注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一车,一房,一个温暖家

10万左右的车,80平方的房子,这是我奋斗的暖暖的家

 
 
 

日志

 
 

引用 ASP.NET MVC框架之URL Routing(四)   

2015-06-25 06:42:09|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本系列文章转载自:http://hi.baidu.com/wikiweb  感谢作者!

一,基本概念:

1,路由的组件是System.Web.Routing,它是同.net 3.5 sp1一起发布的;所以此组件不开放源代码。
2,在ASP.NET webform也可以使用该组件;
2,ASP.NET MVC中对其进行了扩展,定义规则,使用新的“MapRoute”辅助方法,它提供了极其简单的句法,但能做同样的事。
ASP.NET MVC框架之URL Routing(四) - Great Wang - 追求属于自己的一切!
二,Routing的作用:

从上图可以看出,Routing用于
1,定义如何选择Controller类,
2,定义调用哪个Action方法,
3,以及从URL/Querystring中自动解析变量值,并作为参数传递给方法。

下一步,控制器会执行对应的方法。

三,Routing的配置:

1,配置。通常,我们通过在Global.asax文件中的Application_Start事件中添加routes来配置Routing规则,
Global.asax.cs文件中的代码:
public static void RegisterRoutes(RouteCollection routes)
        {
            //忽略对.axd文件的Route,也就是和WebForm一样直接去访问.axd文件
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route 名称
                "{controller}/{action}/{id}", // 带有参数的URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值,id为可选参数
                 //在URL没有指定时controller = Home, action = Index ,id=""
            );
            //可以通过routes.MapRoute()添加多个规则,
            //规则的顺序很重要,根据Route的定义顺序来自上而下匹配的,找到符合的就不向下执行了。

        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //在程序启动的时候注册我们前面定义的Route规则
            RegisterRoutes(RouteTable.Routes);
        }

2,规则对应的URL:
在一个route中,通过在大括号中放一个占位符来定义( { and } ),route定义中不在大括号中的信息则作为常量值。
下图为{controller}/{action}/{id}规则下,不同的URL请求的返回值。
ASP.NET MVC框架之URL Routing(四) - Great Wang - 追求属于自己的一切!

另外,还可以使用星号(*)匹配不确定个数的参数,这会匹配URL后面所有的剩余的参数。例如:

query/{queryname}/{*queryvalues}规则对于url:
query/aspnetmvc/preview5/routing ,则queryvalues参数匹配的参数为值为 preview5/routing。

3,参数说明:
MapRoute()辅助方法是重载了的,可以接受2,3,或4个参数(路径名字,URL句法,URL默认参数,URL参数正则表达式约束)。
例如:
routes.MapRoute(
    
"Default",    //名称随便命名,但是上下文中不能重复                                          
    
"{controller}/{action}/{id}",      //URL句法                     
    
new { controller = "Home", action = "Index", UrlParameter.Optional },  //URL默认参数,
    
new { id = @"[\d]*" } //id必须为数字,更复杂的约束可以通过扩展来实现
);

四,Routing与URL Rewrite的区别:

       1,URL Rewrite:改变程序处理的URL
       2,URL Route:根据URL的规则选择执行
       3,两者执行机制不同
       4,在某些情况下可以产生同样结果
        5,URL Route更像是一种基础支持
           – 适合用于开发基于ASP.NET架构的新框架
---------------------------------------------------------------------
参考资源:
ASP.NET MVC 入门3、Routing
http://www.cnblogs.com/QLeelulu/archive/2008/10/03/1303612.html
ASP.NET MVC框架开发系列课程(3):URL导向
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032378240&Culture=zh-CN
ASP.NET MVC 源码更新预览
http://msdn.microsoft.com/zh-cn/dd458700.aspx
一步一步学asp.net_mvc_中文版.pdf
http://wenku.baidu.com/view/2be68e6a561252d380eb6e0a.html

  评论这张
 
阅读(13)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018