考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:编程开发 > DotNET > ASP.Net > 文章内容
  

ASP.NET教程:ASP.NET4.0URL路由改进支持

 [ 2017年8月31日 ] 【

  本文将重点讨论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事件处理程序中定义了三个路由,如以下代码所示。(注:RouteTable对象和RouteCollection类位于System.Web.Routing命名空间。)

  在Application_Start方法中,我们调用了RegisterRoutes,并传递进RouteCollection类型的参数RouteTable.Routes.接下来,在RegisterRoutes方法中,调用RouteCollection类的MapPageRoute方法,它定义了一个路由模式到ASP.NET页面的路由映射。例如,在第一次调用MapPageRoute方法时,我们创建了一个命名为"All Categories"的路由模式-它负责把路由模式Categories/All映射到ASP.NET页面~/ AllCategories.aspx.

  接下来的两个MapPageRoute方法调用使用参数创建路由模式。其中,"View Product"路由把模式Products/{ProductName}映射到ASP.NET页面~/ ViewProduct.aspx.这里,{ProductName}是一个参数,意味着任何Products/ProductName形式的请求都将被路由到~/ViewProduct.aspx页面。不久你就会看到,{ProductName}参数的值可以从页面~/ViewProduct.aspx中通过Page.RouteData参数加以访问。

  2.创建处理请求的ASP.NET页面

  使用ASP.NET 4.0,你不再需要创建一个自定义的路由处理程序类。当你使用MapPageRoute方法时,这一切都会由底层库为你自动完成。剩下的仅仅是,建立处理请求的ASP.NET页面(AllCategories.aspx,CategoryProducts.aspx和ViewProduct.aspx)。当然,本文示例中的这三个网页相当简单-它们都使用数据源控件,并以编程方式绑定到通过路由参数获取的Categories或者Products表格的数据库结果。

  void Application_Start(object sender, EventArgs e)

  {

  RegisterRoutes(RouteTable.Routes);

  }

  void RegisterRoutes(RouteCollection routes)

  {

  // Register a route for Categories/All

  routes.MapPageRoute(

  "All Categories", //路由名

  "Categories/All", //路由URL

  "~/AllCategories.aspx" //处理路由的网页

  );

  //处理Categories/{CategoryName}的路由

  routes.MapPageRoute(

  "View Category", //路由名

  "Categories/{*CategoryName}", //路由URL

  "~/CategoryProducts.aspx" //处理路由的网页

  );

  // Register a route for Products/{ProductName}

  routes.MapPageRoute(

  "View Product", //路由名

  "Products/{ProductName}", //路由URL

  "~/ViewProduct.aspx" //处理路由的网页

  );

  }

  本文演示程序使用LINQ-to-SQL工具实现数据访问。你会在App_Code文件夹下发现一个Northwind.dbml文件,它创建了一个NorthwindDataContext类。ViewProduct.aspx页面中包含一个DetailsView控件,其中的字段用于显示产品的名称,供应商,单位数量,价格以及其他相关信息。页面的代码隐藏类具有以下(省略了部分)代码:

本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved