zoukankan      html  css  js  c++  java
  • 艾伟_转载: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 和 .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

  • 相关阅读:
    二分练习题4 查找最接近的元素 题解
    二分练习题5 二分法求函数的零点 题解
    二分练习题3 查找小于x的最大元素 题解
    二分练习题2 查找大于等于x的最小元素 题解
    二分练习题1 查找元素 题解
    code forces 1176 D. Recover it!
    code forces 1173 B. Nauuo and Chess
    code forces 1173 C. Nauuo and Cards
    吴恩达深度学习课程笔记-15
    吴恩达深度学习课程笔记-14
  • 原文地址:https://www.cnblogs.com/waw/p/2156982.html
Copyright © 2011-2022 走看看