技术开发 频道

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

  三、生成路由友好的URL

  在创建超链接或者把用户通过Response.Redirect方法从一个网页导航到另一个页面时,使用定义于Global.asax中的路由模式(而不是使用它的实际名称来引用ASP.NET页面模式)是比较理想的选择。例如,有一个ViewProducts.aspx页面,其中有一个链接—通过此链接可以返回到显示选定产品类别的所有产品信息,而这个产品类别链接到Categories/CategoryName,其中CategoryName是产品类别名,要显示的是此类别产品的信息。此时,你可以使用Page.GetRouteUrl方法生成这些路由友好的URL。这个方法有许多重载版本,但最简单的版本仅接收两个参数:路由名称和参数的值。

  例如,为了取得返回到Categories/CategoryName页面的正确的URL,可以使用以下语法:

Page.GetRouteUrl("View Category", new { CategoryName = CategoryName });

 

  在这里,“View Category”是定义于文件Global.asax中路由规则的名称,而CategoryName是出现在URL中的CategoryName参数的值。另一个更具体的例子是:

Page.GetRouteUrl("View Category", new { CategoryName = "Beverages" });

另外,Response.Redirect方法还有另一个新的版本,名为Response.RedirectToRoute。像Page.GetRouteUrl方法一样,这个方法能够接收路由名称和参数值,然后将用户重定向到适当的、路由友好的网址。下面的示例演示了如何将用户重定向到一个特定产品的视图:

 Response.RedirectToRoute("View Product", new { ProductName = ProductName });

 

   四、结论

  ASP.NET路由是.NET框架提供的一个功能强大的库,通过它可以实现URL与底层物理文件间的彻底解耦。自从ASP.NET 3.5 SP1引入后,ASP.NET路由被初步应用于开发ASP.NET MVC应用程序。虽然它也可以用于Web窗体应用程序中,但是配置它需要繁琐的步骤,而且看上去会造成不必要和重复的代码。

  ASP.NET 4.0中加强了ASP.NET路由库,并针对Web窗体应用程序提供了更加灵活的直观的使用场景支持。正如本文中你所看到的,把一个路由模式映射到ASP.NET页面只需要在Global.asax中添加几行代码,而不再需要创建一个自定义的路由处理类。在底层,ASP.NET路由库会自动把路由参数保存到RouteData集合中—然后,你可以从Page类中访问它。而且,这些RouteData值也可以通过像SqlDataSource和ObjectDataSource这样的数据源控件以声明进行访问。

0
相关文章