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



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

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
... 

创建一个新的属性类,然后通过PropertyClass 上的GetCustomAttributes()方法读取属性

最新更新