Какого-то единого подхода нет, так что расскажу, как делаю я (но не в MVC проектах)
В отдельный проект выносим всю бизнес-логику.
В этом проекте, в отдельной папке лежит слой доступа к данным, а в другой папке всякие бизнесовые сервисы так, чтобы сервисы, которые относятся к одной общей оьласти были ближе друг к другу.
В aspnet проекте иерархию уже выстраиваю от путей запросов.
Тоесть если у меня будет эндпоинт GET /api/v1/orders, то и лежать он будет в папке api/v1/
В MVC будет аналогично, только добавятся ещё razor файлы и css
css лучше держать рядом с шаблонами, в которых они используются