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

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

 [ 2017年8月31日 ] 【

  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 => p.ProductName == productName)。SingleOrDefault();

  }

  return _Product;

  }

  }

  在上面的Page_Load事件处理程序中,DetailsView控件被绑定到Product属性返回的Product对象上。在此,Product属性读取Page.RouteData集合中的URL中的ProductName参数值,使用的语法是:Page.RouteData.Values["ProductName"].然后,在LINQ查询中使用ProductName参数值来取回有关具体产品的信息。

  下面的屏幕截图显示了运行中的ViewProduct.aspx页面。该网页对应的网址是/Products/Chai,有关该Chai的详细信息显示于此页面中。

ASP.NET 4.0 URL路由改进支持

  

  在ASP.NET 4.0中设置ASP.NET路由的过程就是这样!但是,在ASP.NET 3.5 SP1中实现上述过程需要五个步骤,而不是二个步骤。

  三、生成路由友好的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这样的数据源控件以声明进行访问。

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