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

时间:2014-06-12 10:51:27

标签: c# asp.net-mvc asp.net-mvc-4

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

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

如何实现这一目标?

由于

6 个答案:

答案 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>
            }