【原创】mvc tips:建立可删节的url
前一段时间,在博问中提了个小问题。http://space.cnblogs.com/question/2823/
全文引用如下:
现在我想实现以下的url地址,搞不出来了
/U/Tea/{pageindex}
/U/Tea/{teaType}/{pageindex}
那么Global.asax.cs里的路径规则和Controller里面分别怎么设置?
我现在遇到的问题是这样的地址
/U/Tea/Green
会默认到第一条规则然后说不能转换为int
而不是到我期望的第二条规则,默认页是1的。
当时承蒙园子里mvc之达人重典老大的回答,找到了一个临时的解决方案。不过这个方案无法实现可删节url。后来,抽出空,我又仔细的想了想,其实要我要求的url还是可以实现的,因为mvc的地址规则是支持正则表达式的。我们只要把是第一个参数是数字的归到路径一,其他类似归到路径二就好了。唯一注意的是teaType不能用数字而已。既然知道了思路,说干就干。
routes.MapRoute(
"Tea",
"U/Tea/{pageIndex}",
new { controller = "U", action = "Tea", pageIndex = 1 },
new { pageIndex = @"\d{1,8}" });
routes.MapRoute(
"TeaType",
"U/Tea/{teaType}/{pageIndex}",
new { controller = "U", action = "TeaType", teaType = string.Empty, pageIndex = 1 });
增加了这两条路径规则以后,基本就实现了我问题里要求的。目前为止,我的项目中就是这么使用的,而且运转良好。各位达人有什么其他好办法欢迎指教、探讨。
"Tea",
"U/Tea/{pageIndex}",
new { controller = "U", action = "Tea", pageIndex = 1 },
new { pageIndex = @"\d{1,8}" });
routes.MapRoute(
"TeaType",
"U/Tea/{teaType}/{pageIndex}",
new { controller = "U", action = "TeaType", teaType = string.Empty, pageIndex = 1 });
增加了这两条路径规则以后,基本就实现了我问题里要求的。目前为止,我的项目中就是这么使用的,而且运转良好。各位达人有什么其他好办法欢迎指教、探讨。