在"_layout"中显示/隐藏项目

本文关键字:quot 隐藏 项目 显示 layout | 更新日期: 2023-09-27 18:08:22

我正在一个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>
...

这显示在每个页面中,我只是希望我可以在用户输入其凭据的初始页面中隐藏它。

如何做到这一点?

谢谢

在"_layout"中显示/隐藏项目

您可以为登录页面设置Layout = null

@{
    Layout = null;
}

您可以使用MVC视图的section来实现此目的。它们正是用于-

_layout.cshtml中包含报头部分如下,因此报头被包含为最佳的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

您可以检查当前用户是否经过身份验证,如果没有,则隐藏希望隐藏的元素。

@if(HttpContext.Current.User != null && HttpContext.Current.User.Identity != null && HttpContext.Current.User.Identity.IsAuthenticated) 
{
    ... stuff to show if user is authenticated here ...
}

您可以在登录页面(cshtml)上编写JQuery。使用$(document).ready()事件并隐藏包含徽标图像的div

use script

 $(window).load(function () {
     $("#actionlinkid").hide = true;
});

同意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>
            }