2010-06-21 86 views
2

所以最近,我想出了一种动态构建导航栏菜单的方法,其中Controller(和其索引ActionMethod)将在每个页面顶部的水平栏中列出(通过Site.Master),但也基于关于用户分配的角色。列出的每个控制器也会列出(在垂直下拉列表中)可供用户使用的ActionMethods。如何将描述附加到控制器(ASP.net MVC)中的每个ActionMethod?

请参阅此处查看我写给的代码create an Extended Controller class for ASP.NET MVC解决了上述问题。

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

我的假设是,我需要做3件事情:

(1)创建自己的属性,比如,描述和装饰各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)在我的基类(ExtController)中创建一个公共ActionResult索引()方法,该方法将由每个继承ExtController的类使用,以显示可供该用户使用的ActionMethods及其描述的列表。

(3)在视图/共享中创建一个Index.aspx视图,它将构建这样一个页面。

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

回答

2

似乎是一种合理的方法。

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

+0

啊,谢谢你的指针。我讨厌重新发明轮子,并不确定是否已经有一个Description属性。 – Pretzel 2010-06-21 17:39:29

+0

Intellisense并没有为我提供任何东西,但我没有引用System.ComponentModel,所以这是有道理的......谢谢! – Pretzel 2010-06-21 17:48:48

相关问题