Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无参数的ASP自定义路由_C#_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

C# 无参数的ASP自定义路由

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

我的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时,它应该点击第二个动作


有什么想法吗?

第二个动作没有命中,因为第一个动作是用{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" } );