如何为控制器和操作方法设置元数据?
How to set metadata for controller and action methods?
我正在使用此代码显示所有带有操作方法的控制器名称:
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
...
创建一个新属性class,然后在Property
和Class
上通过GetCustomAttributes()
方法读取属性
我正在使用此代码显示所有带有操作方法的控制器名称:
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
...
创建一个新属性class,然后在Property
和Class
GetCustomAttributes()
方法读取属性