【问题标题】:How to edit a CSS class in the MVC Layout view using C#如何使用 C# 在 MVC 布局视图中编辑 CSS 类
【发布时间】:2016-01-17 01:05:26
【问题描述】:

我想知道如何从控制器中的 C# 代码更改分配给布局视图中元素的类?

在我的导航栏中,我有一个 css 类,在查看页面时设置为活动,但显然我需要在更改视图(页面)时更改它,但我不确定在 mvc 中执行此操作的最佳方法

【问题讨论】:

  • 你是如何生成 HTML 元素的?

标签: c# html css asp.net-mvc model-view-controller


【解决方案1】:

尝试将 CSS 值绑定到模型或视图包

例如

@Html.TextBoxFor(model => model.Value1, new { @class = ViewBag.value1Class })

或者可能是

<div class="@Model.Class1 @Model.Class2"/>

【讨论】:

    【解决方案2】:

    您可以查看post 中详述的当前控制器名称和操作,并在您的布局中使用该信息来选择应该“活动”的元素。

    或者在一个简单的应用程序中,另一种常见的方法是使用ViewBag 并使用当前页面的名称设置一个属性。

    在您的控制器方法中包括以下内容。

    ViewBag.CurrentPageName = "HomePage";
    

    您的 Razor (MVC3+) 视图代码可以使用此信息并在元素上设置适当的类。

    @{
      string pageName = ViewBag.CurrentPageName ?? "Unknown";
    }
    
    if(pageName == "HomePage"){
       //Output your DOM element with the appropriate class name for the "active" link.
    }
    

    <a href="#" class="@(pageName == "HomePage" ? "active" : string.Empty)>Home Page</a>
    

    对于 MVC2 及更早版本,您需要使用 TempData,但概念类似。

    【讨论】:

      【解决方案3】:

      也许使用jquery?

      $( document ).ready(function() {
          $("#mainPageDiv").removeClass()
                           .addClass('newClass'); 
      });
      

      把它放在视图中,而不是布局。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多