如何设置控制器和操作方法的元数据?

时间:2015-02-03 18:46:24

标签: c# asp.net-mvc reflection

我使用此代码通过操作方法显示所有控制器名称:

public ActionResult GetAllControllers()
        {
            var controllers = typeof (MvcApplication).Assembly.GetTypes().Where(typeof (IController).IsAssignableFrom);
            return View(controllers.ToList());
        }

查看:

<ul id="treeView">
    @foreach (var item in Model)
    {
            <li>
                @item.Name
                <ul>
                    @foreach (var action in item.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).Where(method => typeof(ActionResult).IsAssignableFrom(method.ReturnType)))
                    {
                        <li>@action.Name</li>
                    }
                </ul>
            </li>
    }

</ul>

结果如下:

HomeController
     Index
     About
MainController
     Index
     Create
     Edit
     Delete
...

现在我的问题是:有没有办法为控制器和操作方法设置名称作为显示结果?例如:

[SetName("MainPage")]
public class HomeController : Controller
{
    [SetName("ProductList")]
    public ActionResult Index()
    {
        //
    }
    // other action methods
}

因此,在这种情况下,显示控制器名称和操作方法的结果将是:

MainPage
   ProductList
... 

1 个答案:

答案 0 :(得分:1)

创建新的属性类,然后在GetCustomAttributes()Property

上按Class方法阅读属性