Это не общий вопрос о том, как работают контроллеры и действия, а вопрос о представлении известных структур URL пользователю в ядре dotnet MVC Client.
Я хочу создать "домашнюю страницу" с блогом и, возможно, позже с магазином. Общая структура URL должна быть
https://xxx.xx/... => Homepage content
https://xxx.xx/Blog/... => Blog content
https://xxx.xx/Shop/... => Shop content
«Блог» и «Магазин» являются определенными областями на веб-сайте, поэтому дополнительный путь знаком для пользователя, а контроллеры и действия работают так, как задумано.
Обычно для домашней страницы есть такая структура:
https://xxx.xx/ => Index
https://xxx.xx/privacy
https://xxx.xx/about
https://xxx.xx/company/team
То, что вы не хотите (для глаз), это что-то вроде
https://xxx.xx/Home/privacy
Кроме того, мне нравится получать эти "страницы" из базы данных, так что сам контроллер Home имеет два условия:
- Если после домена ничего не происходит, вызовите контроллер Home, действие Index и Index.cshtml
- Если за доменом есть что-то, у которого нет пути «Блог /» или «Магазин /», это имя или фрагмент страницы и, следовательно, вызовите контроллер Home с «действием страницы» и отобразите страницу. cshtml с контентом из базы данных.
Если я сделаю что-то подобное в домашнем контроллере
[HttpGet("{slug?}")]
public async Task<IActionResult> Index(string slug)
Работает домашняя страница, которая мне нравится, но я больше не могу вызывать другие контроллеры.
Я играл с пользовательскими маршрутами, но моя проблема в том, что, очевидно, маршрутизация не может различить «путь» и «действие».
Есть ли решение моей проблемы или мне нужно иметь дело с этим?