C# 无参数的ASP自定义路由
我的PartnerController中有以下控制器操作,每个操作都有自己的自定义路由 行动1 routes.MapRoute( “GetCardWithShortcode”, “partner/store/getcard/{voucherShortCode}”, 新建{controller=“Partner”,action=“GetCardWithShortCode”} ); 行动2 routes.MapRoute( “GetCard”, “合作伙伴/商店/getcard”, 新建{controller=“Partner”,action=“GetCard”} ); 第一个路由工作正常,但我就是无法让第二个路由工作。理论上,当我点击../partner/store/getcard时,它应该点击第二个动作C# 无参数的ASP自定义路由,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,我的PartnerController中有以下控制器操作,每个操作都有自己的自定义路由 行动1 routes.MapRoute( “GetCardWithShortcode”, “partner/store/getcard/{voucherShortCode}”, 新建{controller=“Partner”,action=“GetCardWithShortCode”} ); 行动2 routes.MapRoute( “GetCard”, “合作伙伴/商店/getcard”, 新建{contr
有什么想法吗?第二个动作没有命中,因为第一个动作是用{voucherShortCode}null调用的 您可以只使用一条路线,然后执行以下操作:
if(String.IsNullOrEmpty(voucherShortCode))
return RedirectToAction("GetCard")
那么您就不需要两条路由了。在添加路由时,它应该具有以下顺序
routes.MapRoute( "GetCard", "partner/store/getcard", new { controller = "Partner", action = "GetCard"} );
routes.MapRoute( "GetCardWithShortcode", "partner/store/getcard/{voucherShortCode}", new { controller = "Partner", action = "GetCardWithShortCode" } );
按照添加的确切顺序发布所有路线。更改顺序。。在顶部添加第二个,然后尝试。。它应该是最具体到最不具体的。我认为这没有问题(哪个MVC?)。在这里工作(MVC4)。只要voucherShortCode不是可选的,它就应该可以工作。你说“第二个不能用”是什么意思?被另一个控制器/操作捕获?不是gud方法@tucaz:)它应该与路由本身一起工作它确实应该,但如果你这样做,你可以保存一个路由:)是的,这是真的,我们可以避免这样的特定路由,直到他们不提供超过一个请求
if(String.IsNullOrEmpty(voucherShortCode))
return RedirectToAction("GetCard")
routes.MapRoute( "GetCard", "partner/store/getcard", new { controller = "Partner", action = "GetCard"} );
routes.MapRoute( "GetCardWithShortcode", "partner/store/getcard/{voucherShortCode}", new { controller = "Partner", action = "GetCardWithShortCode" } );