ASP.NET Web Forms 4.0中双向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 ...>
      <add expressionPrefix="RouteUrl" 
           type="System.Web.Compilation.RouteUrlExpressionBuilder" />
      <add expressionPrefix="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。

【编辑推荐】

  1. 详解.NET 4.0代码契约组件
  2. 如何在.NET中使用MySQL数据库
  3. 浅析.NET框架下的自动内存管理
责任编辑:彭凡 来源: InfoQ
相关推荐

2009-08-19 09:23:40

ASP.NET Rou

2009-07-29 09:59:10

ASP.NET For

2009-07-21 15:11:14

ASP.NET Rou

2009-08-05 16:50:09

ASP.NET For

2009-08-05 16:17:29

ASP.NET For

2012-04-16 09:54:26

2009-08-05 15:29:33

ASP.NET For

2014-06-09 15:29:13

OData v4.0

2009-10-26 15:55:43

URL Routing

2009-03-12 10:42:38

RoutingIgnoreRouteASP.NET

2009-12-02 09:07:45

ASP.NET 4.0

2011-05-23 10:37:03

2009-07-29 10:30:53

Web应用程序ASP.NET

2014-08-26 09:22:40

ASP.NET MVCRouting

2009-08-21 10:51:55

ASP.NET Rou解析URL

2010-05-20 08:50:45

UrlRoutingASP.NET 4.0

2009-08-03 17:35:07

ASP.NET WebASP.NET编程工具

2009-10-15 14:50:34

ASP.NET Rou

2009-08-19 11:39:38

ASP.NET Rou

2009-07-29 17:16:47

点赞
收藏

51CTO技术栈公众号