【问题标题】:How to access RouteData from an ASP.Net 5 Tag Helper in MVC 6如何从 MVC 6 中的 ASP.Net 5 Tag Helper 访问 RouteData
【发布时间】:2015-12-08 17:45:58
【问题描述】:

我正在尝试获取当前路线,以便可以使用标记帮助程序在一组链接中突出显示活动页面。

TagHelperContext 不能让我访问任何有用的东西。如何获得对 RouteData 的引用?

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc tag-helpers


    【解决方案1】:

    我最终找到了这里描述的答案: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"];
    

    也许我在做足够的研究之前发布了这个问题,但这并不完全明显,所以我希望这对其他人有帮助!

    【讨论】:

    • 我一直在做的方式是将这些东西作为属性传递给我的 taghelper,就像 Microsoft 为 AnchorTagHelper 所做的那样,即 asp-controller 和 asp-action,以便我的 taghelper 的使用者可以指定它而不是假设使用与当前请求相同。
    • 谢谢乔 - 澄清一下,我也在这样做。我正在将路由数据中的内容与 asp-controller 和 asp-action 进行比较,以查看相关链接当前是否处于活动状态。即在菜单中突出显示。因此,如果这是一个共享剃刀视图,您不能传入当前活动的视图,它必须是动态的。希望这是有道理的。
    • @Joe - 另外,出于兴趣,您将它们命名为 asp-controller 还是只是控制器?我不确定是否应该使用 asp- 前缀。我提出了stackoverflow.com/questions/32532734/…,但不幸的是它被搁置了(因为煽动宗教战争或关于意见的事情)
    • 我使用 asp-controller 和 asp-action 来与 anchortaghelper 上的相同属性保持一致,但对于我的所有其他属性,我使用的是自定义前缀。
    猜你喜欢
    • 2016-03-18
    • 2011-03-09
    • 2016-09-23
    • 2016-04-10
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多