在动作和控制器中间使用 url 参数
Using url parameter in the middle of action & controller
我正在尝试构建以下路线:
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
并达到我的行动指数(flight/index),目的地=奥地利
可能吗?如何?我试过的方法不起作用:/
我怀疑问题出在您定义路由的顺序上。重要的是要注意它们是从上到下评估的(首先定义,到最后定义)。一旦找到有效的匹配项,它将停止检查其他匹配项。
如果您首先定义了 "default" 路由,它会导致问题,因为它通常匹配很多 URL 模式。
所以我建议您将 "default" 移到最后一个,这样应该可以解决问题。始终尝试在顶部定义最严格的模式,然后向下定义移动灵活的模式(如 "default")。
我正在尝试构建以下路线:
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
并达到我的行动指数(flight/index),目的地=奥地利
可能吗?如何?我试过的方法不起作用:/
我怀疑问题出在您定义路由的顺序上。重要的是要注意它们是从上到下评估的(首先定义,到最后定义)。一旦找到有效的匹配项,它将停止检查其他匹配项。
如果您首先定义了 "default" 路由,它会导致问题,因为它通常匹配很多 URL 模式。
所以我建议您将 "default" 移到最后一个,这样应该可以解决问题。始终尝试在顶部定义最严格的模式,然后向下定义移动灵活的模式(如 "default")。