Мне действительно тяжело разобраться с маршрутизацией.Вероятно, об этом уже спрашивали, но я не смог найти его или не задал правильный путь ...
Я портирую поверх существующего классического сайта asp и начинаю с добавления панели администратора.Что мне нужно, так это то, что когда пользователь просто вводит имя сайта, загружается документ по умолчанию (default.asp), однако, если они вводят {site} / Admin, тогда начинается маршрутизация.Мой контроллер маршрута по умолчанию называется «AdminController», и мой проект настроен для запуска в / Admin.Это работает, но все остальное не работает, если я не вернусь к базовому маршруту по умолчанию, который идет с новым проектом.
Желания:
- {site} -> {site} /default.asp
- {site} / Admin -> Admin / Индекс действия
- {site} / Admin / Магазины -> Магазины / Индекс действия
- {site}/ Admin / Магазины / Правка / {id} -> Магазины / Правка (id) action
Вот мой маршрут, я где-то застрял:
public static void RegisterRoutes(RouteCollection routes)
{
routes.RouteExistingFiles = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"EditShop", // Route name
"Shops/Edit/{slug}", // URL with parameters
new
{
controller = "Shops",
action = "Edit",
slug = ""
} // Parameter defaults
);
routes.MapRoute(
"Shops", // Route name
"Admin/Shops/", // URL with parameters
new
{
controller = "Shops",
action = "Index"
} // Parameter defaults
);
// default route for this app
routes.MapRoute(
"Admin", // Route name
"Admin/", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
// default route for this app (this works for all cases except default.asp)
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute("NothingMatched", "{*url}",
new {controller = "Error", action = "Http404"});
}