快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-03
所示 。(注: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}的路由
   //更多信息,请参考http://forums.asp.net/p/1417546/3131024.aspx
   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控件,其 中的字段用于显示产品的名称,供应商,单位数量,价格以及其他相关信息。页面的代码隐藏类具有以下 (省略了部分)代码:

protected void Page_Load(object sender, EventArgs e)
   {
   dvProductInfo.DataSource = new Product[] { Product };
   dvProductInfo.DataBind();
   }
   private Product _Product = null;
   protected Product Product
   {
   get
   {
   if (_Product == null)
   {
   string productName = Page.RouteData.Values["ProductName"] as string;
   NorthwindDataContext DataContext = new NorthwindDataContext();
   _Product = DataContext.Products.Where(p => 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号