7
我想要獲取當前路由,以便使用標籤助手突出顯示一組鏈接中的活動頁面。如何從MVC中的ASP.Net 5標籤幫助中訪問RouteData 6
TagHelperContext不允許我訪問任何有用的內容。我如何獲得對RouteData的引用?
我想要獲取當前路由,以便使用標籤助手突出顯示一組鏈接中的活動頁面。如何從MVC中的ASP.Net 5標籤幫助中訪問RouteData 6
TagHelperContext不允許我訪問任何有用的內容。我如何獲得對RouteData的引用?
我最終發現這裏所描述的答案: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"];
也許我張貼了這個問題做足夠的研究之前,但這並不完全明顯,所以我希望這可以幫助別人!
我一直在做的方式是將這些東西作爲屬性傳遞給我的標籤幫助器,就像Microsoft爲AnchorTagHelper(即asp-controller和asp-action)一樣,這樣我的標籤幫助器的用戶就可以指定它,而不是假定使用與當前請求相同的內容。 –
感謝喬 - 爲了澄清,我也是這樣做的。我正在將路由數據中的內容與asp-controller和asp-action進行比較,以查看相關鏈接是否當前處於活動狀態。即在菜單中突出顯示。所以如果這是一個共享的剃刀視圖,你不能傳入當前活動的視圖,它必須是動態的。希望這是有道理的。 –
@Joe - 出於興趣,你將它們命名爲asp-controller還是控制器?我不確定我是否應該使用asp-前綴。我提出了http://stackoverflow.com/questions/32532734/should-my-custom-asp-net-5-mvc-6-tag-helpers-have-an-asp-prefix,但它已被擱置不幸(用於煽動宗教戰爭或意見) –