2

所以最近,我想出了一种动态构建导航栏菜单的方法,其中控制器(及其索引操作方法)将列在每个页面顶部的水平栏中(通过 Site.Master),但也基于用户分配的角色。列出的每个控制器还将列出(在垂直下拉列表中)用户可用的 ActionMethods。

有关我为 ASP.NET MVC 创建扩展控制器类而编写的代码,请参见此处,该类解决了上述问题。

我意识到我还想为每个控制器自动创建一个默认索引页面,其中列出了所有可用的 ActionMethod 以及每个 ActionMethod 的简短 1 或 2 句描述,但正在思考如何将描述附加到 ActionMethod。

我的假设是我需要做三件事:

(1)创建我自己的属性,比如说,描述并装饰每个控制器中的每个动作方法,如下所示:

[Authorize(Roles="Admin")]
public class SomeController : ExtController
{
   [Description("This method adjusts all of your widgets making them better.")]
   public ActionResult TweakWidgets()
   {
      return View();
   }
}

(2) 在我的基类 (ExtController) 中创建一个公共 ActionResult Index()方法,每个继承 ExtController 的类都将使用该方法来显示可供该用户使用的 ActionMethod 及其描述的列表。

(3) 在 Views/Shared 中创建一个 Index.aspx 视图来构建这样一个页面。

这是一个明智的做法吗?有一个更好的方法吗?

4

1 回答 1

2

似乎是一种合理的方法。

但是 System.ComponentModel 中已经有一个DescriptionAttribute类,您可以利用它。手册页上还有一些用于反映该属性的示例代码。

于 2010-06-21T17:38:04.290 回答