zoukankan      html  css  js  c++  java
  • mvc 做伪静态另外一个方法

    上一篇文章介绍如何做伪静态如下:

        routes.MapRoute(//两个参数不带动作
                "TwoparameterNoAction",
                "{controller}/{CurrentID}/{ClassID}.html",
                new { controller = @"[a-zA-Z]", action = "Index", CurrentID = @"[\d]{0,3}", ClassID =UrlParameter.Optional }
                );

    这样就能匹配:http://www.163.com/Home/1/2.html  但无法匹配 http://www.163.com/home/1.html 虽然ClassID是可选的 但还是无发匹配

    这个时候很多同学都是重写多个路由来完成,其实不必如此,我们可以利用路由的通配符{*catchall} * 表示多出所有的段落都可以用catchall 来获取。

    既然我们是做伪静态使URL个更加友好。我们完全可以这样做:

    routes.MapRoute(//两个参数不带动作 多余的参数从catchall 获取
                "TwoparameterNoAction",
                "{controller}/{CurrentID}/{*catchall}",
                new { controller = @"[a-zA-Z]", action = "Index", CurrentID = @"[\d]{0,3}"}
                );

    http://www.163.com/home/1.html  那CurrentID就等于int.Parse(controlerContext.RouteData.Values["CurrentID"].ToString().Replace(".html",""))
    http://www.163.com/home/1/2.html  那CurrentID就等于1而classid 就等于catchall=2.html 我同样int.Parse(controlerContext.RouteData.Values["catchall"].ToString().Replace(".html",""))

    呵呵 这样,到此大家就知道了这个.HTML 也被当参数来用了,哈哈 同样实现了“伪静态”,对于我现在所开发的中小型网站绰绰有余。

    那有的同学就会每一个页面都要获取参数怎么办?很简单嘛,模型绑定下,在需要控制器的动作 传递模型就可以。这点 我就不细说了。

    那再多的参数我们都不怕了 哈哈,1/2/3/4/5/6/7/8/9.html 都可以实现哦,但前提就是必须约定开发。

    希望大牛路过的时候 提供更好的方法 ,希望能抛砖引玉!

  • 相关阅读:
    强制类型转换
    《thinking in java》 接口与内部类
    JAVA强制类型转换(转载+自己的感想)
    Java 面试题问与答:编译时与运行时
    Java注解处理器
    Java反射详解
    BZOJ5072:[Lydsy1710月赛]小A的树(树形DP)
    BZOJ4987:Tree(树形DP)
    BZOJ3791:作业(DP)
    BZOJ1972:[SDOI2010]猪国杀(模拟)
  • 原文地址:https://www.cnblogs.com/flyfish2012/p/2875990.html
Copyright © 2011-2022 走看看