我使用此代码通过操作方法显示所有控制器名称:
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
...
答案 0 :(得分:1)
创建新的属性类,然后在GetCustomAttributes()
和Property
Class
方法阅读属性