/ / ASP.NET MVC URL Route Mapowanie (przepisywanie adresów URL) - asp.net-mvc, przepisywanie adresów URL, trasy, globalny asax

Odwzorowanie tras URL MVC ASP.NET (przepisywanie adresów URL) Problem - asp.net-mvc, przepisywanie adresów URL, trasy globalne asax

Oto moja struktura folderów .Net MVC:

zrzut ekranu

Mam osobny folder o nazwie „Obszar”, aw środku mam folder o nazwie „Restauracja”. Wewnątrz tego folderu „Restauracja” mam kontroler o nazwie „MenuController”, który ma akcję o nazwie „Indeks”

Próbuję przepisać adres URL (Custom Route Mapping) wewnątrz „Global.asax.cs” przy użyciu następującego kodu.

routes.MapRoute(
"RestaurantMenu", // Route name
"Restaurant/{id}", // URL with parameters
new { controller = "/Restaurant/Menu", action = "Index", id = UrlParameter.Optional }
// Parameter defaults
);

Ale dał mi błąd HTTP 404.

Odpowiedzi:

2 dla odpowiedzi № 1

Parametrem kontrolera na trasie powinna być nazwa kontrolera, a nie ścieżka:

Jeśli nazwa twojego kontrolera to Menu następnie zmień to w ten sposób:

routes.MapRoute(
"RestaurantMenu", // Route name
"Restaurant/{id}", // URL with parameters
new { controller = "Menu", action = "Index", id = UrlParameter.Optional }
// Parameter defaults
);

I jeszcze jedna dziwna rzecz: czy ta trasa znajduje się w twoim pliku Global.asax? Powinien znajdować się w pliku RestaurantAreaRegistration.cs w następujący sposób;

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 }
);

}
}

wtedy możesz spróbować. Jeśli chcesz użyć ActionLink z tą trasą, użyj go w następujący sposób:

@Html.ActionLink("MyLink", "Index", "Menu", new { id = 1, Area = "Restaurant"})

Powyższy kod napisałem w notatniku, więc mogą pojawić się literówki :)