在我的routeConfig中,我在默认路由的顶部添加了一个自定义路由
routes.MapRoute(
name: "appointmentandattendee",
url: "{controller}/{action}/{appointmentId}/{attendeeId}",
defaults: new { controller = "Response", action = "Index", appointmentId = UrlParameter.Optional, attendeeId = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
所以,对于这个动作
public ActionResult Index(Guid appointmentId, Guid attendeeId)
{
return Content("Hello");
}
路由看起来像
http://localhost/Response/Index/96de7851-49f6-4b69-8a58-2bea39bd466e/7d4fe8ed-7dae-e311-be8f-001c42aef0b2
但现在忽略名称默认的路由
例如:
在我的Appointment控制器中有一些动作和参数作为id我期望使用默认路由,但事实并非如此
因此,对于AppointmentController
public ActionResult Test(Guid id)
{
return Content("Hello");
}
路由看起来像
localhost:/Appointment/Test?id=96de7851-49f6-4b69-8a58-2bea39bd466e
为什么? 在这种情况下,它不应该使用默认路由吗?
答案 0 :(得分:2)
因为您的路线appointmentandattendee
会覆盖您的默认路线。
试试这个:
routes.MapRoute(
name: "appointmentandattendee",
url: "Response/{action}/{appointmentId}/{attendeeId}",
defaults: new { controller = "Response", action = "Index", appointmentId = UrlParameter.Optional, attendeeId = UrlParameter.Optional }
);
我将第一部分的网址指定为Response
,默认控制器仍为controller = "Response"
。现在你的路线不像以前那样普遍。