【发布时间】:2015-02-03 18:46:24
【问题描述】:
我正在使用这段代码来显示所有带有操作方法的控制器名称:
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
...
【问题讨论】:
-
我是一个非常流利的 C# 用户,但是你可以使用过滤器来做到这一点。
-
您可以创建自己的属性并用它们标记您的方法。它们包含的数据可通过您已在使用的反射获得。
标签: c# asp.net-mvc reflection