ナビゲーションページがあり、ナビゲーションの作成をクリックすると、コントローラー名を含むドロップダウンが表示され、1つのコントローラーを選択すると、別のドロップダウンに関連するアクションが表示されます
どうすればコントローラーの名前とアクションを見つけることができますか?
ナビゲーションページがあり、ナビゲーションの作成をクリックすると、コントローラー名を含むドロップダウンが表示され、1つのコントローラーを選択すると、別のドロップダウンに関連するアクションが表示されます
どうすればコントローラーの名前とアクションを見つけることができますか?
私はコントローラーとアクションのために重労働をしました。このコードは、リスト アイテムを含む順序付けられていないリストを生成し、ビューにドロップできます。このリストを目的の効果を持つメニューに変えるお気に入りの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>