快速业务通道

ASP.NET 4的Demo实践 - URL路由改进支持

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-03
你把路由参数存储到HttpContext.Items集合中, 然后创建并返回一个负责生成该网址对应内容的ASP.NET页面的实例。尽管路由处理类具有相似特征,但 是编写这些类是一项冗长的任务,因为每个新路由都需要一个新的处理程序类,而此类需要实现几乎与前 一个类同样的任务。

在ASP.NET 3.5 SP1中使用ASP.NET路由的另一种挑战主要与负责生成最终内容的ASP.NET页面相关。此 页面必须从HttpContext.Items集合 ((或其它其他存储它们的路由处理程序类)中读出路由参数。此外, 为一个超链接或Response.Redirect调用生成路由友好的URL(如 Categories/CategoryName)的语法也有点 冗长和混乱。

在ASP.NET 4.0中,路由支持得到了增强,包括一些新的路由相关的方法,从而使定义映射到实际 ASP.NET页面的路由规则更加简单。在ASP.NET 4.0中,你不再需要创建自定义路由处理程序类作为中介, 而只需要从Global.asax文件中的路由规则中直接引用ASP.NET页面即可。当从路由规则中指定一个 ASP.NET页面时,路由参数被自动存储在一个新的RouteData集合中,此集合可以从ASP.NET页面中通过 Page.RouteData结构进行访问。更重要的是,在.NET框架4.0中包括一个自定义参数控件,这样一来,你 可以使用声明的方式从 ASP.NET的数据源控件(如SqlDataSource和LinqDataSource等)中使用RouteData中 的值,而且也提供了一些方法来生成路由友好的URL,以及重定向到路由友好的网址。

本文将重点讨论ASP.NET在ASP.NET 4.0中的路由系统改进支持。本文提供的演示程序是一个Web窗体应 用程序,这是一个罗斯文商贸网站的前端。它使用了ASP.NET路由支持来创造简洁且搜索引擎友好的网址 。例如,/Categories/All将显示所有类别,/Categories/Beverages将列出属于饮料类的所有产品,而 /Products/Chai将显示有关产品Chai的细节信息。

请注意,为了在ASP.NET 3.5 SP1中使用ASP.NET路由支持,你需要明确地在你的项目中添加对 System.Web.Routing程序集的引用,并需要添加一些标记到 Web.config配置文件中。这些步骤在使用 ASP.NET 4.0时不再需要,而且,在Global.asax文件中用于定义路由规则的语法更为短小、简单和具有可 读性。

本文后面的内容将给出在ASP.NET 4.0中使用ASP.NET路由的详细步骤描述。

二、使用ASP.NET 4.0路由

下面给出在ASP.NET 4.0中使用ASP.NET路由的详细描述。

0. 前提

本文提供的演示程序使用了新添加到ASP.NET 4.0中的ASP.NET路由功能。如果你使用Visual Studio 2010或Visual Web Developer 2010(或更高版本),那么你正好具备了这一前提。

1.在文件Global.asax中定义路由规则

要使用ASP.NET路由系统,你需要在应用程序启动时定义一个或多个路由。方法是,在你的项目中添加 一个全局应用程序类文件(Global.asax)。在这个文件中,我们将在Application_Start事件中注册这些路 由。

定义于Global.asax文件中的路由指示什么样的路由处理程序负责处理什么样的URL模式。在MVC应用程 序中,一种流行的模式是 Controller/Action/ID;这意味着针对/Products/View/Aniseed Syrup或 Categories/Edit/Beverages的请求将由配置的路由处理程序来处理。在应用程序中定义什么样的路由方 面,你可以拥有足够的灵活性。例如,你可以定义模式的多个部分,定义缺少部分的默认值,甚至还要定 义针对某些输入类型的限制部分。

本文演示程序是一个简单的数据驱动应用程序,它使用了Northwind数据库,并接受下列模式的URL:

/Categories/All—列出数据库中所有产品类型;

/Categories/CategoryName—列出相应于特定类型的产品信息;

/Products/ProductName—显示特定产品的信息。

因此,我在Global.asax文件的Application_Start事件处理程序中定义了三个路由,如以下代码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号