I do not possess much knowledge on MVC
, JavaScript
or Bootstrap
. But here I am stuck at something working on all the three. I have a Layout
page consisting of a navigation bar styled using Bootstrap
. Idea taken from here. Markup given below.
<div id="innerTab">
<ul class="nav nav-pills">
<li class="active">
<a href="@Url.Action(" Index ", "Home ")" data-toggle="tab">Index</a>
</li>
<li>
<a href="@Url.Action(" About ", "Home ")" data-toggle="tab">About</a>
</li>
</ul>
<div class="tab-content clearfix">
<div class="tab-pane active">
@RenderBody()
</div>
</div>
</div>
Since this is a Layout View
, I want to be able to load the content from the other Views in the tab content area. Due to which, I have to make use of @RenderBody()
which cannot be called more than once. I am not really sure what data-toggle
does exactly but clicking on About
had no impact whatsoever. Then I realised that I had to manually set the active
class on the clicked tab via JS
. So this is what I did.
$(".nav li").on("click", function() {
$(".nav li").removeClass("active");
$(this).tab('show');
})
Now, the selected tab did become active. However, for some unknown reason, when clicked on About
, it does not navigate to the About
page but stays at Index
. Because of which I had to change it to @Html.ActionLink
as given below.
@Html.ActionLink("About", "About", "Home")
This successfully navigated to the About
page. However, the About
tab becomes active for a second and quickly switches to the Index
tab but displays the content from the About
page. like below.
Thought adding data-toggle
would fix this. So I followed the answer given here.
@Html.ActionLink("About", "About", "Home", new { data_toggle="tab"})
And then it's back to square one. Except for the fact that it highlights the tab I select, it does nothing.I am lost!! Where am I going wrong?