首页新闻找找看学习计划

怎么实现博客园那样的url优化? .net mvc3 url 优化问题

0
悬赏园豆:200 [已解决问题] 解决于 2012-11-30 18:20
//控制器中的方法
  public ActionResult ExhibitionIndex(string big,string small, string location, string tag,  string type, string sotime,
    string isOver, string pageNo)
       {
           int location_ = 0, tag_ = 0, big_ = 0, type_ = 0, sotime_ = 0,
            isOver_ = -1, small_ = 0, pageNo_ = 1;
               //代码实现...
          
               
            //返回的页面
           return Index(big_,sotime_,small_,location_,tag_,type_,isOver_,pageNo_);
       }    

//路由器中的配置

  routes.MapRoute(
           "ExhibitionIndex", // Route name
           "zhanhui/{big}/{small}/{location}/{sotime}/{tag}/{type}/{isOver}/{pageNo}", // URL with parameters
           new
           {
               controller = "Exhibition",
               action = "ExhibitionIndex",
               big = UrlParameter.Optional,
               small = UrlParameter.Optional,
               location = UrlParameter.Optional,
               sotime = UrlParameter.Optional,
               tag = UrlParameter.Optional,
               type = UrlParameter.Optional,
               isOver = UrlParameter.Optional,
               pageNo = UrlParameter.Optional
           },
              new[] { "eBuul.CESNS.WebSite.Controllers" }
        );
//所有的参数都是可选的

我的问题是:
怎么使用正则去匹配不同的参数?

比如: http://xxx.com/zhanhui/

http://xxx.com/zhanhui/big_1/shanghai/

http://xxx.com/zhanhui/shanhai/big_1/type_2

诸如此类的路径,有什么好的方法去实现参数的赋值?我目前只想到在控制器的方法里面去遍历所有的参数,然后在把每一个参数,去判断是哪个值,这样的方法好傻啊,就想知道博客园是怎么实现url的优化的,

最大的问题就是,参数不固定,可能没有,可能全部有,也可能有几个,如果参数不全,控制器里面的值,就是乱的,只能去遍历然后判断了,如果写正则表达式匹配参数的话,每次都要传递全部的参数才行,

有什么方法能解决么

问题补充:

恩 简单点 就是 怎么实现博客园那样的url优化?

键盘上的考拉的主页 键盘上的考拉 | 初学一级 | 园豆:12
提问于:2012-11-27 14:58
< >
分享
最佳答案
1

spring mvc3 可以使用注解的方式

1 @RequestMapping("/{code}")
2     public String show(HttpServletRequest request,HttpServletResponse response,@PathVariable String code){

{code} 就是动态的数据,利用@PathVariable 得到code的值

收获园豆:200
| 菜鸟二级 |园豆:406 | 2012-11-28 09:51

恩谢谢关注 ,spring mvc3 是java的吧,我现在用的是.net的

键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-28 10:51
| 园豆:406 (菜鸟二级) | 2012-11-28 11:17

@轼: 恩恩 我就是用的这种思路,但是就是我现在的代码参数太多了,传递进来,需要遍历判断值,我想 有没有什么好的解决方法?

键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-28 11:22
其他回答(6)
1

要不你提供一个参数,然后你传入一个字符串用’-‘来拼接的字符串,然后你在服务器端进行分割  这样url就小了很多,然后你也可以通过model banding 来传递数据

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-27 15:04

恩谢谢你的关注,seo给的要求就是要像博客园那样的路径,只用一个参数不符合要求啊

支持(0) 反对(0) 键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-27 15:11
1

http://xxx.com/zhanhui/big_1/shanghai/

http://xxx.com/zhanhui/shanhai/big_1/type_2 

 

这2个肯定是2个路由吧...

没看懂啥意思

峰X | 园豆:8 (初学一级) | 2012-11-27 15:06

呃,谢谢关注,不是的,是一个路由的,只要路劲前面是< zhanhui >的就进来上面写的那个路由

支持(0) 反对(0) 键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-27 15:17
1

参数太多了吧,如果有固定长度的几个参数的可以设置固定的路由。

也可以设置 无数参数

routes.MapRoute("Unlimited", "zhanhui/{*id}", new { controller = "Exhibition", action = "ExhibitionIndex" });

 public ActionResult ExhibitionIndex(string id)
 {
     //进行分割处理
      string [] par=id.Split('/');     
 }    

 

Qlin | 园豆:2403 (老鸟四级) | 2012-11-27 16:07

恩 谢谢关注啊,如果进来做分割处理,还是要在后台做参数的判断,我现在有个问题, 如果路由器里面设置正则表达式,那么可空参数的正则怎么写,因为如果写上了可空参数的正则,参数就不是可空的了

支持(0) 反对(0) 键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-27 16:22
1
  routes.MapPageRoute("showinfo",//显示新闻
            "cn/{year}/{Month}/{day}/{IDFilename}.html",
            "~/View/info.aspx", true, new RouteValueDictionary { { "year", "2012" }, { "Month", "1" }, { "day", "1" }, { "ID", "1" } }, new RouteValueDictionary { { "year", @"\d+" }, { "Month", @"\d+" }, { "day", @"\d+" }, { "ID", @"[\w\-]*" } });
      
            routes.MapPageRoute("list", "list/{listCategory}/{page}", "~/View/latest.aspx", true, new RouteValueDictionary { { "listCategory", "all" }, { "page", "1" } }, new RouteValueDictionary { { "listCategory", @"[\w\-\,]*" }, { "page", @"\d+" } });// 新闻列表
          
王大湿 | 园豆:457 (菜鸟二级) | 2012-11-27 17:17

谢谢关注啊, "~/View/info.aspx",?这个是?我用的是mvc3

支持(0) 反对(0) 键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-28 10:47
1

Route里面有个Constraints,然后在Constraints里面添加验证规则(正则表达式的)

az235 | 园豆:8283 (大侠五级) | 2012-11-28 12:51

恩谢谢大侠的提点,我添加正则的时候就有个问题,不知道怎么给可空的参数添加正则,我一加上正则就不是可空的参数了....

支持(0) 反对(0) 键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-28 17:20
0

解决了, 还是使用我的思路,但是整理了下,不使用以前旧的代码了,so ,重现写了一遍,规整了下,谢谢各位大侠的相助

键盘上的考拉 | 园豆:12 (初学一级) | 2012-11-30 18:17

请问是怎么解决的呢?

支持(0) 反对(0) wontonJ | 园豆:204 (菜鸟二级) | 2013-01-08 11:33

@wontonJ: 恩,不好意思,我今天才看到,写了一个简单的思路,你看看有没有参考价值吧 http://www.cnblogs.com/Fyhong/

支持(0) 反对(0) 键盘上的考拉 | 园豆:12 (初学一级) | 2013-01-28 17:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册