Мне действительно трудно разобраться с маршрутизацией. Наверняка уже спрашивали, но я не нашел или не так спросил...
Я переношу существующий классический сайт asp и начинаю с добавления панели администратора. Что мне нужно, так это то, что когда пользователь просто вводит имя сайта, загружается документ по умолчанию (default.asp), однако, если они вводят {site}/Admin, маршрутизация вступает во владение. Мой контроллер маршрута по умолчанию называется «AdminController», и мой проект настроен для запуска в / Admin. Это работает, но все остальное не работает, если только я не вернусь к основному маршруту по умолчанию, который идет с новым проектом.
Желания:
- {сайт} -> {сайт}/default.asp
- {site}/Admin -> Действие администратора/индекса
- {site}/Admin/Shops -> Действие Shops/Index
- {site}/Admin/Shops/Edit/{id} -> Действие Shops/Edit(id)
Вот моя маршрутизация, я где-то застрял:
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"});
}
1 ответ
Я вижу, вы сопоставили EditShop с Shops/Edit. Это, вероятно, должно быть сопоставлено с Admin/Shops/Edit, чтобы достичь того, что вы хотите. С другим маршрутом проблем не вижу, но могу ошибаться.
Похожие вопросы
Связанные вопросы
Новые вопросы
model-view-controller
Модель-представление-контроллер (MVC) — это архитектурный шаблон, введенный в середине 1970-х годов в PARC для того, чтобы составить интерфейс программного обеспечения, а также взаимодействие с пользователем. Для Microsoft ASP.NET MVC вместо этого используйте тег [asp.net-mvc] или [asp.net-core-mvc]. Для Spring MVC используйте тег [spring-mvc].