艾伟_转载:VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

简介: 本系列文章导航VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇VS 2010 和 .

本系列文章导航

VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇

VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇

VS 2010 和 .NET 4.0 系列之《起始项目模板》篇

VS 2010 和 .NET 4.0 系列之《多定向支持》篇

VS 2010 和 .NET 4.0 系列之《多显示器支持》篇

VS 2010 和 .NET 4.0 系列之《代码优化的Web开发Profile》篇

VS 2010 和 .NET 4.0 系列之《ASP.NET, HTML, JavaScript 代码片段支持》篇

VS 2010 和 .NET 4.0 系列之《自动启动ASP.NET应用》篇

VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

VS 2010 和 .NET 4.0 系列之《在VS 2010中查询和导航代码》篇

VS 2010 和 .NET 4.0 系列之《VS 2010代码智能提示的改进》篇

VS 2010 和 .NET 4.0 系列之《添加引用对话框的改进》篇

VS 2010 和 .NET 4.0 系列之《内置图表控件》篇

  这是我针对即将发布的VS 2010 和 .NET 4所撰写的 贴子系列的第八篇。今天的博客讨论ASP.NET 4中一个很酷的新运行时特性 - 对基于Web Forms的网页使用URL导向(routing)的功能。

  什么是URL导向(Routing)?

  URL导向是我们最先在ASP.NET 3.5 SP1中引入的功能,为ASP.NET MVC应用程序所用,以呈示干净的,SEO友好的“web 2.0” URLs。URL导向让你配置一个应用以接受并不映射到实际文件的请求URL,你可以使用导向来定义对用户来说在语义上有富有含义,有助于搜索引擎优化(SEO)的URL。

  例如,一个显示产品分类的传统网页的URL很可能是象下面这样的:

     http://www.mysite.com/products.aspx?category=software

  使用ASP.NET 4中的URL导向引擎,你现在可以配置应用来接受下述URL来显示同样的信息:

     http://www.mysite.com/products/software

  在ASP.NET 4.0中,象上面这样的URL现在既可映射到ASP.NET MVC控制器类,也可以映射到基于ASP.NET Web Forms的网页。

  使用ASP.NET MVC映射URL

  ASP.NET 3.5 SP1中引入的URL导向引擎提供了一个强有力的方式来处理进到服务器中来的URL。一般地,作为应用起始代码的一部分,你编写代码将匹配特定URL格式的URL注册/映射到代码处理器上。

  下面是一个例子,你如何可以使用目前的ASP.NET MVC将/products/softwareURL映射到拥有一个名叫“Browse”的action方法的名为“Products”的控制器类上:

  上面MapRoute()辅助方法的第一个参数,“products-browse”,是该路径的友好名称。第二个参数,“products/{category}”,则是匹配/products/software URL的URL过滤器,它会将URL的第二节当作一个名为“category”的参数值处理,然后这个参数会被传到ProductsController的Browse() action 方法中做处理。

  使用ASP.NET Web Forms映射URL

  除了映射到ASP.NET MVC控制器外,ASP.NET 4.0 现在还允许你使用URL导向引擎来将URL映射到ASP.NET Web Forms网页上。

  下面是一个例子,你如何可以使用ASP.NET 4.0中新的MapPageRoute()辅助方法来将 /products/software URL映射到处于应用根目录下的“Products.aspx”网页之上:

  MapPageRoute()辅助方法的前二个参数,与MapRoute()的一样。第一个参数提供了路径的友好名称,第二个参数指定了所匹配的URL格式。但第三个参数,指向Products.aspx网页来处理,而不是控制器类。你也可以对MapPageRoute()指定额外的参数,来利用象“路径约束”这样的特性和提供“默认参数值”,就象在基于ASP.NET MVC的路径注册中一样。

  然后在Products.aspx网页中,你可以编写象下面这样的代码,使用ASP.NET 4.0中新的Page.RouteData属性来获取通过/products/{category} URL 过滤器映射而来的“category”参数的值,然后将分类产品进行数据绑定来显示:

  除了使用象上面这样的代码、用编程的手法来获取传进来的路径参数外,你也可以在任何ASP.NET DataSource控件中,利用新的声明式<asp:routeparameter>控件,声明式地绑定来自路径的值。例如,在下面,我们使用了<asp:routeparameter> 语句,将SELECT语句的@category参数绑定到URL路径中/products/{category}参数:

  在ASP.NET Web Form中获取URL

  ASP.NET中的URL导向引擎既可以用来将进到服务器中来(incoming)的URL映射到代码处理器上,也可使用同样的映射注册逻辑,使用编程的手法生成输出到客户端(outgoing)的URL。

  例如,在上面,当我们映射 /products/{category} URL时,我们给了它一个友好的名称,叫“products-browse”。这还允许我们使用新的Page.GetRouteUrl()辅助方法,查询URL导向系统中的路径,或者,指定路径针对的参数,然后获取映射到路径的实际URL。例如,下面的代码将获取其值为“/products/software”的URL:

  你可以在你的后台代码文件中或你的 .aspx标识中使用上述辅助方法。

  现在还有一套Response.RedirectToRoute()方法,可以为你所用来将用户重新定向到一个路径(无论是MVC还是Web Forms),同时还可以传递参数。

  处理PostBack场景

  ASP.NET 4.0中的URL导向完全支持postback场景,<form runat=”server”> 控件会自动地输出导致页面显示的同个URL。例如,如果你用/products/software URL访问一个网页,其中的服务器端的<form runat=”server”>控件会输出一个<form action=”/products/software”> HTML元素到客户端,这意味着,网页上发生的任何postback场景都会保留原先的URL。

  这使得在Web Forms和 postback场景中支持干净的,SEO友好的URL容易之极,避免了今天大家在使用URL重写模块取得类似效果时需要采用的一些招术。

  结束语

  ASP.NET 4.0 方便了干净的,SEO友好的URL的实现, 既可通过ASP.NET MVC来实现,现在又可通过ASP.NET Web Forms来实现(你还可以有混合了两者的应用)。

  URL导向引擎使得注册任何形状或格式的URL,并将它们映射到任何你想要的处理器容易之极。因为URL导向引擎既可用于映射进来的URL,也可用于生成输出的URL,你可以在以后改变URL映射,而不必修改任何特定于网页或控制器的代码来反映这些变动,极大地方便了SEO优化的应用的建造。

  希望本文对你有所帮助,

  Scott

目录
相关文章
|
25天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
169 3
|
4月前
|
编解码 前端开发 JavaScript
.NET_web前端框架_layui_栅格布局
【8月更文挑战第27天】
52 4
|
25天前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
2月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
109 9
|
3月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
3月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
114 3
|
3月前
|
开发框架 前端开发 .NET
VB.NET中如何利用ASP.NET进行Web开发
在VB.NET中利用ASP.NET进行Web开发是一个常见的做法,特别是在需要构建动态、交互式Web应用程序时。ASP.NET是一个由微软开发的开源Web应用程序框架,它允许开发者使用多种编程语言(包括VB.NET)来创建Web应用程序。
72 5
|
3月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
61 0
|
4月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写