我有一个导航页面,我想要点击创建导航时,我会显示包含控制器名称的下拉目,然后在另一个下拉列表中选择一个控制器时
那么如何找到我的控制器名称和操作?
我有一个导航页面,我想要点击创建导航时,我会显示包含控制器名称的下拉目,然后在另一个下拉列表中选择一个控制器时
那么如何找到我的控制器名称和操作?
我确实为控制器和动作做了繁重的工作。此代码会生成一个包含列表项的无序列表,并且可以将其拖放到您的视图中。您可以使用您最喜欢的jquery 菜单插件,将此列表转换为具有所需效果的菜单。
此代码可以轻松重构为使用控制器和(部分)视图的解决方案,以防您需要重用此代码段。
<ul>
@{
var allTypes =
from asm
in AppDomain.CurrentDomain.GetAssemblies()
let types = (
from type
in asm.GetTypes()
let contname = type.Name.Replace("Controller","")
let methods = (
from method
in type.GetMethods()
let hasHttpPost =
method.GetCustomAttributes(
typeof(HttpPostAttribute),
false).Length > 0
where (method.ReturnType.IsSubclassOf(
typeof(ActionResult))
|| method.ReturnType == typeof(ActionResult))
&& !hasHttpPost
select new
{
Controller = contname,
Action = method.Name
}
)
where type.IsSubclassOf(typeof(Controller))
select new {Name = contname, Controllers = methods }
)
select new { asm.FullName, AllControllers = types };
foreach (var controllers in allTypes)
{
foreach (var controller in controllers.AllControllers)
{
<li>
@controller.Name
<ul>
@{
foreach (var controlleraction in controller.Controllers)
{
<li>
<a href="@controlleraction.Controller/@controlleraction.Action">
@controlleraction.Action
</a>
</li>
}
}
</ul>
</li>
}
}
}
</ul>