首页 新闻 会员 周边

问个MVC地址路由的问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-05-18 21:42

配置了以下路由
 

routes.MapRoute(
  "List",
  "Products/List/{Category}_C{CategoryID}_{Keyword}_{CurrentPage}.html",
  new { controller = "Products", action = "List", Keyword = UrlParameter.Optional, CurrentPage = 1 }
  );

 



其中Keyword是搜索关键字,这个可能为空,所以我Keyword = UrlParameter.Optional

但在测试的时候以下地址是无法浏览的,显示404

http://localhost/Products/List/Other-Auto-Parts_C76__1.html
必须要在Keyword的加上内容

另外我在测试的时候,好像地址中参数与参数之间必须要/分隔,然后可空参数才能起作用!

请问我哪里做的不对??谢谢

imegg的主页 imegg | 初学一级 | 园豆:8
提问于:2012-05-18 00:00
< >
分享
最佳答案
0

UrlParameter.Optional没怎么了解过,不过,从菜鸟的回答来看,应该配置了这个选项的参数应该数据路径的一部分,而且应该是在地址中的最后一部分。

对这个情况,虽然能在URL里路由解决是最好的,但有时过于复杂的路由还是建议在ACTION里去分析,把路径信息笼统的传递给ACTION。虽然这个方案有点无赖的感觉(相对于MVC路由技术来说),但却可以把那些没必要花费在路由配置上的精力用在别的地方。

收获园豆:15
无之无 | 大侠五级 |园豆:5095 | 2012-05-18 08:43

这个mvc的路由相比之Url重写来说实在是太不灵活了。。。

 

谢谢二位

imegg | 园豆:8 (初学一级) | 2012-05-18 14:05

@imegg: URL重新支持正则表达式,而URL路由则不支持(其实也有支持,只是我很少用,支持到什么程度,是否如URL重新一样就不确定了)

无之无 | 园豆:5095 (大侠五级) | 2012-05-18 14:18

@笨笨蜗牛: 嗯,他的正则只是限制参数的格式。。。

imegg | 园豆:8 (初学一级) | 2012-05-18 21:42
其他回答(1)
0

貌似把“Keyword = UrlParameter.Optional” 去掉就可以了吧

收获园豆:5
草根程序猿 | 园豆:129 (初学一级) | 2012-05-18 07:42

试过的,不行

支持(0) 反对(0) imegg | 园豆:8 (初学一级) | 2012-05-18 14:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册