1

カスタムヘルパークラスでコントローラー名を取得できる必要があります。

私は次のものを持っています:

  1. コントローラを呼び出すレイアウトビュー:「HelperController」、アクション:「メニュー」のように:

@Html.Action("Menu", "Helper")

  1. これにより、ActionResultが呼び出され、htmlが生成されます。

    @model List<MvcMenuItem>
    @{
    Layout = null;
    }
    @{        
    @Html.Menu(this.ViewContext).ClientId("navMain").AddRange(Model).Render()
    }
    
  2. これは「public static class MvcMenuExtensions」を呼び出し、そこで(私のRender()メソッドでは)呼び出しているコントローラー名ではなく、現在使用しているコントローラー名を取得できる必要がありますMvcMenuExtensions

私はこれを試しました:

string controller = this.ViewContext.RouteData.Values["controller"].ToString();

ただし、これにより、コントローラーは " Helper"コントローラーになり、現在のコントローラーではありません。この " ActionResult"はページのどこからでも呼び出されているため(レイアウト内にあります)。

ありがとう

4

1 に答える 1

1

ここで答えた:子アクションの内部から現在のコントローラーとアクションを取得する方法は? juhan_hによる

ControllerContext.ParentActionViewContext.RouteData.Values["action"] 

また

ViewContext.ParentActionViewContext.RouteData.Values["action"]
于 2012-08-01T09:30:48.843 に答える