Итак, получение контроллеров и действий кажется мне относительно тривиальной частью. Сложной является возможность получить все возможные значения параметров, которые вы, возможно, захотите показать в URL-адресах вашей карты сайта. Если у вас есть шаблон URL, такой как {controller}/{action}/{id}
, то вы не сможете определить путем размышления, что означает значение id
или возможные значения. Лучшее, что вы можете сделать, это определить тип системы.
Что мне пришло в голову, когда я смотрел на это, так это то, что карта сайта - это просто еще одно представление данных вашего сайта. Одна случайная мысль, которая у меня возникла, заключалась в том, что если вы наследуете от базового контроллера в своем приложении и у вас есть метод на этом базовом контроллере, который должен быть реализован, например:
abstract ActionResult SiteMapSnippet();
Затем вы можете создать SiteMapController
, который вызывает каждый из других контроллеров в решении и запрашивает их фрагмент, а затем отображает их все вместе в одном конечном виде. Это своего рода составной контроллер, хотя это понятие еще не добавлено в эту платформу.