Хотя я полностью согласен с ответом @ Darin , здесь есть относительно простой способ сделать то, что вы просите, используя ViewData.
Относительно реальной логики перечисления всех контроллеров.Я не буду добавлять это здесь, так как это - разумный способ сделать это, что я, вероятно, не смогу улучшить.
Вы могли бы сделать что-то, используя ViewData для хранения всех ваших контроллерови действия динамически от OnActionExecuting.Вам нужно создать новый контроллер, от которого будут наследоваться все ваши другие контроллеры.
Так, например, с вашим ProductController:
public class ProductController : MyCustomController
{
...
}
...
public class MyCustomController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
//Some logic (not written) to reflect each of the controllers and actions. Probably something utilising IGrouping.
var controllersActions = GetControllersActions();
//Drop your collection into the ControllersActions.
filterContext.Controller.ViewData.Add("ControllersActions", controllersActions);
}
}
На главной странице ...
<% var controllersActions = ViewData["ControllersActions"]; %>
... outputting your controllers/actions ...