2015-03-03 22 views
0

我试图建立以下路线的中间使用URL参数:在行动及控制器

routes.MapRoute(
       name: "StaticPage", 
       url: "guide/{destination}/{controller}/{action}", 
       defaults: new { controller = "Home", action = "Index", destination = UrlParameter.Optional } 
     ); 

我的控制器如下:

public class FlightsController : Controller 
{ 
    public ActionResult Index(string destination= null, string origin=null) 
     { 

     // some code here 

     } 
} 

我想浏览到这个地址 - > www.somewebsite.com/guide/austria/flights

,并达到我的行动指数(飞行/指数),与目标=奥地利

这可能吗?如何?我试过的方法不起作用:/

+0

您正在使用哪个版本的MVC? – 2015-03-03 12:24:13

+0

自从我使用MVC以来已经有一段时间了,但它看起来应该适用于我。你有没有任何冲突的路线映射? – musefan 2015-03-03 12:24:28

+0

不,只有默认路由.. @Francis,4.0.0.0 – 2015-03-03 12:26:05

回答

1

我怀疑问题是由于您定义路由的顺序。值得注意的是,他们从上到下进行评估(先定义,后定义)。一旦找到有效的比赛,它将停止检查其他比赛。

如果您首先定义了“默认”路由,则会导致问题,因为它通常会匹配很多URL模式。

所以我建议你将“默认”移动到最后一个,并且应该解决问题。总是尝试在顶部定义最具限制性的模式,并向下移动到灵活的模式(如“默认”)。