Только только начал изучать ASP.NET -> пишу приложение с возможностью регистрации и входа через обычную html форму.
На главной странице приложения будет соответствующие кнопки, я хочу чтобы по нажатию на них пользователя перекидывало на xxx.com/registration и xxx.com/login соответственно, где будет подружатся новая форма с полями, кнопками, все дела.
Но есть проблема, для того чтобы обратится к методу, который возвращает эту самую форму, нужно писать url такого типа: xxx.com/registration/registration или xxx.com/login/login, т.е обращаться к контроллеру, а потом к методу.
ВОПРОС: как сделать так, чтобы не нужно было указывать имя метода в url, тем самым писать такие некрасивые пути xxx.com/registration/registration, как сделать так, чтобы нужно было обращаться только к контроллеру xxx.com/registration, после чего подгружалась нужная форма??
Первое решение это в вашем контроллере сделать действие с названием Index, в этом случае в пути его можно не указывать, и путь site.ru/controllerName будет автоматически идти к действию Index.
Это поведение прописано в маршруте по умолчанию, обычно в файле startup.cs.
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
Второе решение это создать специальный маршрут для этого
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "myRoute",
/* шаблон маршрута */
template: "registration";
/* куда отправим запрос по этому шаблону */
defaults: new { controller = "registration", action = "myRegistrationAction" });
});
Основы маршрутизации в ASP.NET Core.
Третий вариант задавать маршруты с помощью атрибутов:
[Route("registration")]
public IActionResult AnyActionName()
Атрибуты маршрутизации.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости