Параметром контроллера внутри вашего маршрута должно быть имя контроллера, а не путь:
Если имя вашего контроллера Menu
, измените его следующим образом:
routes.MapRoute(
"RestaurantMenu", // Route name
"Restaurant/{id}", // URL with parameters
new { controller = "Menu", action = "Index", id = UrlParameter.Optional }
// Parameter defaults
);
И еще одна странная вещь: этот маршрут находится внутри вашего файла Global.asax? Он должен находиться внутри вашего файла RestaurantAreaRegistration.cs следующим образом:
public class RestaurantAreaRegistration : AreaRegistration {
public override string AreaName {
get {
return "Restaurant";
}
}
public override void RegisterArea(AreaRegistrationContext context) {
context.MapRoute(
"RestaurantMenu", // Route name
"Restaurant/{id}", // URL with parameters
new { controller = "Menu", action = "Index", id = UrlParameter.Optional }
// Parameter defaults
);
context.MapRoute(
"Accommodation_default",
"accomm/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
тогда вы можете дать этому шанс. Если вы хотите использовать ActionLink с этим маршрутом, используйте его так:
@Html.ActionLink("MyLink", "Index", "Menu", new { id = 1, Area = "Restaurant"})
Я написал приведенный выше код с помощью блокнота, поэтому возможны некоторые опечатки:)