我在mvc 5项目上工作。
在我的_Layout.cshtml
我有一个名为id="topBar"
的html元素,每个页面都会显示此元素。
但我有一个名为About.cshtml的页面我不希望这个页面只显示id="topBar"
中所有其他html元素的元素_Layout.cshtml
我希望它们在{{1}中正常显示}}
任何想法如何实现上述描述的外观?
答案 0 :(得分:2)
有两种选择:
body
元素添加ID 您可以在每个页面的正文中添加ID
,其中包含例如Controller和Action名称,然后添加CSS规则以隐藏about页面上的topBar元素。
首先,让我们为控制器和动作名称创建两个字符串变量。在_Layout.cshtml中执行此操作:
@{
string controller = ViewContext.RouteData.Values["controller"].ToString();
string action = ViewContext.RouteData.Values["action"].ToString();
}
接下来,将ID添加到正文:
<body id="@controller-@action">
在你的css中,你现在可以添加一个规则来隐藏about页面中的topbar(假设控制器叫做HomeController):
#Home-About #topBar {display:none;}
您还可以使用扩展方法来获取控制器和操作名称。例如like this。
你可以在你的about页面上添加一个Javascript并使用jQuery来隐藏topbar(我假设已经加载了jQuery):
<script>
$("#topBar").hide();
</script>
答案 1 :(得分:2)
实现此目标的一种简单方法(不使用javascript)是在ViewBag
内的Action
内设置值,并在布局中使用它:
<强> _Layout.cshtml 强>
@if (ViewBag.ShowTopBar ?? false)
{
<div id="topBar">
</div>
}
控制器中的操作:
public class MyAwesomeController : Controller
{
public ActionResult About()
{
ViewBag.ShowTopBar = true;
return View();
}
}
答案 2 :(得分:0)
更简单的方法是:单独设置页面样式:
<style>
#showcase { display: none; }
</style>
将其放在您要隐藏的页面上,展示是我的部分ID。 ;)