Reputation: 501
I am wanting to implement a navigation sidebar in MVC 5
, but I couldn't find any built in classes in the Bootstrap 3
that came with the project. I've tried with the following code:
_Layout.cshtml
<body>
//the sidebar code is here...
<div id="Wrapper">
<ul>
<li>hello</li>
<li>Project</li>
<li>Account settings</li>
</ul>
</div>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@Html.Partial("_LoginPartial")
</div>
</div>
</div>
<div class="container body-content" id="page-content-wrapper">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year/p>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
<link href="~/Content/Custom.css" rel="stylesheet" />
@RenderSection("scripts", required: false)
CSS
#Wrapper {
background-color: #3F51B5;
z-index:1;
height: 100%;
width:300px;
position:fixed;
}
#page-content-wrapper{
margin-left:300px;
}
So far, what I've done is that I put a margin-left: 300px
to the page content and add a <div id="Wrapper">
to encapsulate the side navigation bar and have styling to it. The results I get is as below:
However, I found out these problems with this implementation:
_Layout.cshtml
means that every page will have that side menu . But I would like the side menu to appear only when a user logged in.View
, this will cause the ugly white space at the left side of the page since every View
is rendered in @RenderBody()
._Layout.cshtml
, how do I include the jQuery
code to toggle and hide the side menu when a button is clicked?Is there any better implementation of this?
Upvotes: 4
Views: 11702
Reputation: 4263
To keep the solution simple I would create two layouts:
_Layout.cshtml
_LayoutNoSidebar.cshtml
To toogle sidebar, include this template in your _Layout.cshtml
:
https://blackrockdigital.github.io/startbootstrap-simple-sidebar/
Upvotes: 1