asp.net Routing 用法

http://www.cnblogs.com/youring2/archive/2011/07/22/2113595.html

asp.net 4.0中提供了Routing 的支持。通过使用routing技术,我们可以方便的构建出友好的url,即能方便用户理解,又能做到SEO的优化。

  

  1.在Global中注册路由表

        void Application_Start(object sender, EventArgs e)        {            // 在应用程序启动时运行的代码            this.RegisterRoutes(RouteTable.Routes);        }

        void RegisterRoutes(RouteCollection routes)        {            routes.MapPageRoute("BookDetails",                "book/details/{index}/{keyword}",                "~/book/details.aspx",                false,                new RouteValueDictionary()                 {                    { "index", "1" },                    {"keyword", ""}                }            );        }

  

  2.生成URL

  一种方法是硬编码,根据上面的规则,我们可以简单的写出一个匹配的URL:/book/details/23/asp

  当然,硬编码的方式是不被推荐的,它不便于维护我们的规则。在这里,我们推荐使用VirtualPathData 来生成虚拟路径,在使用的时候,我们需要提供相应的路由名称和参数列表:

    RouteValueDictionary parameters = new RouteValueDictionary()    {         {"index", "19" },         {"keyword", "Tom" },     };

    VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, "BookDetails", parameters);    hlCreateURL.NavigateUrl = vpd.VirtualPath;

  在这段代码中,vpd.VirtualPath就是根据规则BookDetails生成的虚拟URL。

  3.获取参数值

  使用了Routing后,我们就不能再通过Request.QueryString 集合来获取URL的参数了。这是因为Routing并没有重写URL,只是将URL的处理交给了指定的页面。

  这个时候,我们要获取网页的参数,就需要使用Routing中的方法了。

this.Page.RouteData.Values["index"];this.Page.RouteData.Values["keyword"];

  

  整个的使用流程就是这样的,首先要有规则,然后要有访问的地址,最后要能获取到实际的参数。

---------------------------------------------------------

ps. 附上一些学习资源,分别来自老赵的博客和MSDN:

http://msdn.microsoft.com/zh-cn/library/dd329551.aspx

http://msdn.microsoft.com/zh-cn/library/cc668201.aspx

http://www.cnblogs.com/JeffreyZhao/archive/2009/09/29/aspnet-routing-request-processing.html

http://www.cnblogs.com/JeffreyZhao/archive/2009/09/30/things-about-aspnet-routing.html

如果认为此文对您有帮助,别忘了支持一下哦!

时间: 2024-10-07 12:27:58

asp.net Routing 用法的相关文章

.NET/ASP.NET Routing路由(深入解析路由系统架构原理)

出处:http://www.cnblogs.com/wangiqngpei557/ 阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4.1UrlRoutingModule 对象内部结构 4.2RouteBase.Route.RouteCollection.RouteTable 路由核心对象模型 4.3RouteValueDictionary.Rou

【转】.NET/ASP.NET Routing路由(深入解析路由系统架构原理)

阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4.1]UrlRoutingModule 对象内部结构 4.2]RouteBase.Route.RouteCollection.RouteTable 路由核心对象模型 4.3]RouteValueDictionary.RouteData.RequestContext 路由数据对象模型 4.4]IRou

ASP.NET Routing

ASP.NET Routing Other Versions ASP.NET routing enables you to use URLs that do not have to map to specific files in a Web site. Because the URL does not have to map to a file, you can use URLs that are descriptive of the user's action and therefore a

ASP.NET路由[ASP.NET Routing]

ASP.NET路由[ASP.NET Routing] ASP.NET路由允许你在使用URL时不必匹配到网站中具体的文件,因为这个URL不必匹配到一个文件,你使用了描述用户行为且更容易被用户理解的URL. ASP.NET MVC框架和ASP.NET动态数据(Dynamic Data)扩展路由为MVC应用和动态数据应用增加了特色. 在不使用路由的ASP.NET应用中,一个新的请求会被映射到一个物理文件并由该文件处理这个请求,例如一个.aspx文件.例如,如下请求http://server/appli

NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)

NET/ASP.NET Routing路由(深入解析路由系统架构原理) 阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4.1UrlRoutingModule 对象内部结构 4.2RouteBase.Route.RouteCollection.RouteTable 路由核心对象模型 4.3RouteValueDictionary.RouteData

004. Asp.Net Routing与MVC 之二: 请求如何激活Controller和Action

上篇讲到 请求到达 MvcRouteHandler ,并且透过 IRouteHandler.GetHttpHandler 获取到了真正的处理程序 MvcHandler 这次我们看看,MvcHandler是如何依据请求,来激活对应的controller和Action来处理请求的. 一.先看看MvcHandler 的核心内容 1: public class MvcHandler : IHttpAsyncHandler, IHttpHandler, IRequiresSessionState 2: {

003. Asp.Net Routing与MVC 之一: 请求如何到达MVC

前言 本文用到的基础知识:URL.HttpModule 与 HttpHandler.IIS7.0的请求处理过程. URL      参见<基础URL>, HttpModule与HttpHandler请读<HttpModule .HttpHandler> IIS7.0的请求处理过程请读<IIS7的><IIS架构> OK,现在我们来看请求如何到达MVC: 一.请求如何到达Asp.Net Routing 我们知道IIS网站的配置可以分为两个块:全局 Web.Con

Asp.Net Cookie用法

比如建立一个名为cookiePhone,值为2598998的cookie HttpCookie cookie = new HttpCookie["cookiePhone"];cookie.Value = "2598998;Response.AppendCookie(cookie); 取出Cookie值也很简单 HttpCookie cookie = Request.Cookies["cookiePhone"];cookieValue = cookie.Va

.NET/ASP.NET Routing路由(深入解析路由系统架构原理)http://wangqingpei557.blog.51cto.com/1009349/1312422

阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4.1]UrlRoutingModule 对象内部结构 4.2]RouteBase.Route.RouteCollection.RouteTable 路由核心对象模型 4.3]RouteValueDictionary.RouteData.RequestContext 路由数据对象模型 4.4]IRou