zoukankan      html  css  js  c++  java
  • Net4.0AspNet中URL重写的改进

    URL重写有很多的好处,如有利于SEO、便于记忆、隐藏真实路径使安全性提高、便于更新等等。在AspNet4.0之前的版本中要实现URL重写比较复杂,有时还会借助第三方类库,而在AspNet4.0中可以很方面实现,下面就一步一步来讲解怎样在AspNet4.0中实现URL重写。

    1 打开VS2010,创建一个AspNet项目命名为UrlRewriterDemo。

    2010-07-27_100812

    可以看到AspNet4中的项目结构有点类似AspNet MVC ,加了很多现成的东西,只需稍加修改就可以变成一个简单的个人站点。

    2 打开Global.asax文件,引用命名空间System.Web.RoutingSystem.Web.Routing命名空间在Net3.5中就已经存在,不过功能没有4.0中的强大。在该文件中添加如下方法:

    void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("productdetail", 
            "products/{category}/{name}",
            "~/test.aspx", false,
            new RouteValueDictionary { { "category", "book" }, { "name", "aspnet" } });
    }

    MapPageRoute方法的参数解释:

    "productdetail":路由名称,取一个和当前路由设置相匹配的名称即可。

    "products/{category}/{name}":URL的重写规则。

    "~/test.aspx":配置对应的物理文件。

    new RouteValueDictionary { { "category", "book" }, { "name", "aspnet" } }:配置默认值。

    3 在Global.asax中的方法Application_Start中添加如下代码:

    void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }

    4 在项目中添加一个页面命名为test.aspx,如果命名为别的名称,在上面的MapPageRoute方法的配置物理文件的参数就应该设置为相应的名称。在test.aspx页面中添加如下内容:

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
        <h1>Url Rewriter Test Page!</h1>
    </asp:Content>

    5 将该项目设置为固定端口,比如10000,按F5运行项目,将URL地址修改为http://localhost:10000/products,此处的products为URL重写规则中配置的名称。运行结果如下:

    2010-07-27_104717

    6 我们在RegisterRoutes中配置了默认参数值category和name,如需要在页面中获取参数值,可以使用RouteData.Values,将test.aspx页面代码修改如下:

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
        <h1>Url Rewriter Test Page!</h1><br />
    
        分类名为:<%= RouteData.Values["category"] %><br />
        产品名为:<%= RouteData.Values["name"] %>
    </asp:Content>

    7 刷新页面可以看到在RegisterRoutes中配置的默认值会呈现在页面上:

    2010-07-27_110508

    8 将URL修改为http://localhost:10000/products/computer/thinkpad,再刷新页面可以看到页面中呈现的是URL中设置的分类名和产品名:

    2010-07-27_111408

  • 相关阅读:
    二分图 洛谷P2055 [ZJOI2009]假期的宿舍
    并查集 洛谷P1640 [SCOI2010]连续攻击游戏
    贪心 洛谷P2870 Best Cow Line, Gold
    贪心 NOIP2013 积木大赛
    快速幂 NOIP2013 转圈游戏
    倍增LCA NOIP2013 货车运输
    树形DP 洛谷P2014 选课
    KMP UVA1328 Period
    动态规划入门 BZOJ 1270 雷涛的小猫
    KMP POJ 2752Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/oec2003/p/1785862.html
Copyright © 2011-2022 走看看