本文标签:ASP.NET Routing引擎
.NET Framework 3.5 SP1已经包含了ASP.NET Routing引擎 。现在微软已经在ASP.NET WebForms 4.0中增加了对Routing引擎更好的支持,它使用表达式构造器进行双向Routing 。
Channel 9刚发布了一个10-4的新视频,展示如何在ASP.NET 4.0中使用这个新功能 。
下面是视频中展示的一段代码 。他们使用了一个经典示例,展示如何将Product.aspx?category=Jerseys映射至Product/Jerseys 。在使用ASP.NET Routing引擎时,我们可以在Application_Start中向RouteTable添加这样的映射: - RouteTable.Routes.Add("Product",
- new Route("Product/{name}",
- new PageRouteHandler("'/Product.aspx")));
目前为了得到双向的Routing支持,用户必须对Query String进行URL重写 。不过,使用ASP.NET 4.0时,用户可以注册如下的表达式构造器(expression builder): - <system.web>
- <compilation>
<expressionBuilders...> <addexpressionPrefixaddexpressionPrefix="RouteUrl" type="System.Web.Compilation.RouteUrlExpressionBuilder"/> <addexpressionPrefixaddexpressionPrefix="RouteValue" type="System.Web.Compilation.RouteValueExpressionBuilder"/> expressionBuilders> compilation> system.web>
第一个表达式用于生成URL而第二个用于获取Route值 。在aspx页面中可以使用$符号来访问表达式:
- <asp:HyperLink NavigationUrl="<%$ RouteUrl:RouteName=Product, name=Jerseys"
- Text="Jerseys"
- runat="server" />
如果要获取name属性中的值,用户可以使用Route对象而不是Request对象:
- RouteData.Values["name"];
或使用表达式构造器:
- <%$ RouteValue:name %>
用户可以利用ASP.NET Routing引擎和新的双向支持将URL和物理上的Web Form解耦,以便支持对搜索引擎更友好的URL 。
|