【问题标题】:Best way to add css class to element in razor layout file?将css类添加到剃刀布局文件中的元素的最佳方法?
【发布时间】:2012-02-01 16:26:21
【问题描述】:

我有一个带有导航菜单的网页。当前页面必须突出显示,这是通过添加一个 css 类来完成的。但是这个菜单是在布局页面中定义的,那么如何将类添加到当前菜单项中呢?

我能想到的唯一解决方案是为每个菜单项使用唯一的 ViewBag 属性,并使用它从适当的 Action 方法添加类。 示例:

<div class="link @ViewBag.DashboardActive">
    @Html.ActionLink("Dashboard", "Index")
</div>
<div class="link @ViewBag.Item2Active">
    @Html.ActionLink("Item2", "Item2")
</div>

等等

这可以完成工作,但我觉得有一种更优雅的方法可以解决这个问题。

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

    您可以编写一个自定义助手来生成这些菜单并将 CSS 类应用于当前选定的项目。你躺着看看following example。这是一个使用锚点的similar

    【讨论】:

    • 我见过的最干净的解决方案。 +1 :)
    • 谢谢,这看起来是个不错的解决方案!待其他一些问题解决后,我将在今天晚些时候实施。
    【解决方案2】:

    如果您不想在使用的每个操作中设置 ViewBag 属性,请使用@Html.RenderAction 方法。

    这是你的观点:

    @{ Html.RenderAction("Menu", "MyController", new {selectedItem = "dashboard"}); }
    

    这是您的菜单操作:

    [HttpGet, ChildActionOnly]
    public PartialViewResult Menu(string selectedItem)
    {
        ViewBag.SelectedItem = selectedItem;
        return PartialView("Menu");
    }
    

    在我设置选定菜单项的项目中,我使用自定义操作过滤器属性,我将其应用于控制器/操作。

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 2023-03-13
      相关资源
      最近更新 更多