【发布时间】:2016-01-17 01:05:26
【问题描述】:
我想知道如何从控制器中的 C# 代码更改分配给布局视图中元素的类?
在我的导航栏中,我有一个 css 类,在查看页面时设置为活动,但显然我需要在更改视图(页面)时更改它,但我不确定在 mvc 中执行此操作的最佳方法
【问题讨论】:
-
你是如何生成 HTML 元素的?
标签: c# html css asp.net-mvc model-view-controller
我想知道如何从控制器中的 C# 代码更改分配给布局视图中元素的类?
在我的导航栏中,我有一个 css 类,在查看页面时设置为活动,但显然我需要在更改视图(页面)时更改它,但我不确定在 mvc 中执行此操作的最佳方法
【问题讨论】:
标签: c# html css asp.net-mvc model-view-controller
尝试将 CSS 值绑定到模型或视图包
例如
@Html.TextBoxFor(model => model.Value1, new { @class = ViewBag.value1Class })
或者可能是
<div class="@Model.Class1 @Model.Class2"/>
【讨论】:
您可以查看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,但概念类似。
【讨论】:
也许使用jquery?
$( document ).ready(function() {
$("#mainPageDiv").removeClass()
.addClass('newClass');
});
把它放在视图中,而不是布局。
【讨论】: