-1

ナビゲーションページがあり、ナビゲーションの作成をクリックすると、コントローラー名を含むドロップダウンが表示され、1つのコントローラーを選択すると、別のドロップダウンに関連するアクションが表示されます

どうすればコントローラーの名前とアクションを見つけることができますか?

4

1 に答える 1

2

私はコントローラーとアクションのために重労働をしました。このコードは、リスト アイテムを含む順序付けられていないリストを生成し、ビューにドロップできます。このリストを目的の効果を持つメニューに変えるお気に入りの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>
于 2012-06-02T14:33:49.477 に答える