2015-09-12 19 views
7

タグヘルパーを使用してリンクのセット内のアクティブページを強調表示できるように、現在のルートを取得しようとしています。MVC 6のASP.Net 5タグヘルパーからRouteDataにアクセスする方法

TagHelperContextを使用しても便利なものはありません。 RouteDataへの参照を取得するにはどうすればよいですか? https://github.com/aspnet/Announcements/issues/28

あなたは新しい属性を使用して、プロパティインジェクションを使用してViewContextをインポートすることができます。

答えて

14

は、私は最終的にここで説明する答えを見つけました。あなたはこのようにあなたのタグヘルパークラスでプロパティを作成する必要があります。

[ViewContext] 
public ViewContext ViewContext { get; set; } 

は、あなたがそのようにように、現在のコントローラやアクションにアクセスすることができます。

var pageController = ViewContext.RouteData.Values["controller"]; 
var pageAction = ViewContext.RouteData.Values["action"]; 

は、たぶん私は十分な研究を行う前に、この質問を投稿しました、しかし、これは完全に明らかではなかったので、これが他の誰かを助けることを願っています!

+0

私が行ってきたやり方は、Microsoftがtagchaperの属性としてそれらの属性を渡すことです。これは、MicrosoftがAnchorTagHelperのasp-controllerとasp-actionと同じ方法で、タグヘルパーの消費者が現在の要求と同じものを使用すると仮定します。 –

+0

ありがとうジョー - 明確にするために、私もこれをやっています。私は経路データにあるものとasp-controllerとasp-actionを比較して、問題のリンクが現在アクティブであるかどうかを確認しています。すなわちメニュー内でハイライトする。したがって、これが共有の剃刀のビューであれば、現在アクティブな剃刀のビューを渡すことはできません。それは動的でなければなりません。希望は意味をなさない。 –

+0

@Joe - また、あなたはそれらをasp-controllerまたはコントローラの名前にしていますか? asp-接頭辞を使用するべきかどうかはわかりません。私はhttp://stackoverflow.com/questions/32532734/should-my-custom-asp-net-5-mvc-6-tag-helpers-have-an-asp-prefixを提出しましたが、残念ながら –

関連する問題