ASP.NET 4的Demo实践 - URL路由改进支持
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中设置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这样的数据源控件以声明进行访问。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |