配置了以下路由
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的加上内容
另外我在测试的时候,好像地址中参数与参数之间必须要/分隔,然后可空参数才能起作用!
请问我哪里做的不对??谢谢
UrlParameter.Optional没怎么了解过,不过,从菜鸟的回答来看,应该配置了这个选项的参数应该数据路径的一部分,而且应该是在地址中的最后一部分。
对这个情况,虽然能在URL里路由解决是最好的,但有时过于复杂的路由还是建议在ACTION里去分析,把路径信息笼统的传递给ACTION。虽然这个方案有点无赖的感觉(相对于MVC路由技术来说),但却可以把那些没必要花费在路由配置上的精力用在别的地方。
这个mvc的路由相比之Url重写来说实在是太不灵活了。。。
谢谢二位
@imegg: URL重新支持正则表达式,而URL路由则不支持(其实也有支持,只是我很少用,支持到什么程度,是否如URL重新一样就不确定了)
@笨笨蜗牛: 嗯,他的正则只是限制参数的格式。。。
貌似把“Keyword = UrlParameter.Optional” 去掉就可以了吧
试过的,不行