2015-09-12 20 views

回答

14

我最終發現這裏所描述的答案:https://github.com/aspnet/Announcements/issues/28

您可以通過使用一個新的屬性使用屬性注入導入ViewContext。你需要在你標記輔助類來創建一個屬性是這樣的:

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

然後,您可以訪問當前的控制器或動作,像這樣:

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

也許我張貼了這個問題做足夠的研究之前,但這並不完全明顯,所以我希望這可以幫助別人!

+0

我一直在做的方式是將這些東西作爲屬性傳遞給我的標籤幫助器,就像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,但它已被擱置不幸(用於煽動宗教戰爭或意見) –

相關問題