Совсем недавно я нашел способ динамически создавать меню навигационной панели, в котором Контроллер (и его Index ActionMethod) будет отображаться на горизонтальной панели в верхней части каждой страницы (через Site.Master), но также на основе назначенных ролей пользователя. Каждый из перечисленных контроллеров будет также перечислять (в вертикальном раскрывающемся списке) доступные для пользователя методы ActionMethods.
См. Здесь код, который я написал для . Создайте класс Extended Controller для ASP.NET MVC , который решил вышеупомянутую проблему.
Я понял, что я также хочу автоматически создать страницу индекса по умолчанию для каждого контроллера, в которой перечислены все доступные ActionMethods и краткое описание 1 или 2 предложений для каждого ActionMethod, но я размышлял, как прикрепить описание к ActionMethod.
Я предполагаю, что мне нужно сделать 3 вещи:
(1) Создайте свой собственный атрибут, скажем, Description и украсьте каждый ActionMethod в каждом контроллере следующим образом:
[Authorize(Roles="Admin")]
public class SomeController : ExtController
{
[Description("This method adjusts all of your widgets making them better.")]
public ActionResult TweakWidgets()
{
return View();
}
}
(2) Создать открытый метод ActionResult Index () в моем базовом классе (ExtController), который будет использоваться каждым классом, унаследовавшим ExtController, для отображения списка ActionMethods и их описаний, доступных этому пользователю. .
(3) Создайте представление Index.aspx в Views / Shared, которое будет создавать такую страницу.
Это разумный подход? Есть ли лучший способ сделать это?