我正在开发一个C#MVC项目,我想要一个主页面,其中包含一些信息,其中包含左上角的应用程序徽标。但是,有一个视图,我不希望它被看到,登录页面。
那么,我如何只为Home/Index
视图隐藏它,然后为所有其他视图显示它?
这是_Layout.cshtml
...
<body>
<header>
<div class="content-wrapper">
<div class="float-left">
<a href="../Home/Index"><img src="../../Images/_logo.png" alt="whatever" /></a>
</div>
...
这显示在每个页面中,我只希望我可以将其隐藏在用户输入其凭据的初始页面中。
如何实现这一目标?
由于
答案 0 :(得分:3)
您可以为该登录页面设置Layout = null。
@{
Layout = null;
}
答案 1 :(得分:2)
您可以使用section
MVC视图来实现此目的。它们正是用于此 -
_layout.cshtml
中的包含标题部分,因此标题包含在optinal section
@RenderSection("Header", False)
@RenderSection("MainContent")
然后其他页面可以有单独的标题,例如(some.cshtml
) -
@section Header {
<header>
<div class="content-wrapper">
<div class="float-left">
<a href="../Home/Index"><img src="../../Images/_logo.png" alt="whatever" /></a>
</div>
}
@section MainContent{
other body content.
}
对于login
而言,只是不定义section
而只提供正文 -
@section MainContent{
other body content.
}
这不仅可以让您显示隐藏标题,还可以根据内容页面的内容和需要自定义布局。
您可以从这里了解更多信息 -
http://www.codeproject.com/Articles/383145/RenderBody-RenderPage-and-RenderSection-methods-in
在msdn中你可以找到文档
http://msdn.microsoft.com/en-us/library/system.web.webpages.webpagebase_methods(v=vs.111).aspx
答案 2 :(得分:0)
您可以检查当前用户是否经过身份验证,如果没有,则隐藏您要隐藏的元素。
@if(HttpContext.Current.User != null && HttpContext.Current.User.Identity != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
... stuff to show if user is authenticated here ...
}
答案 3 :(得分:0)
您可以在登录页面(cshtml)上编写JQuery。使用$(document).ready()事件并隐藏包含徽标图像的div。
答案 4 :(得分:0)
使用脚本
$(window).load(function () {
$("#actionlinkid").hide = true;
});
答案 5 :(得分:-1)
同意Softsen提供的解决方案。但是如果您只是要求隐藏特定页面的徽标,可以按照以下方式执行:
@if(Request.Url.ToString().IndexOf("index")==-1)
{
<div class="float-left">
<p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
</div>
}