我對MVC
,JavaScript
或Bootstrap
沒有太多的知識。但在這裏,我被困在所有這三個方面。我有一個Layout
頁面,其中包含使用Bootstrap
設計的導航欄。想法取自here。標記如下。@ Url.Action在導航欄中點擊時沒有路由
<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>
由於這是一個Layout View
,我希望能夠加載從標籤內容區域其他意見的內容。因此,我必須利用@RenderBody()
這不能被稱爲不止一次。我真的不確定data-toggle
究竟做了什麼,但點擊About
沒有任何影響。然後我意識到我必須通過JS
手動設置active
類的點擊標籤。所以這就是我所做的。
$(".nav li").on("click", function() {
$(".nav li").removeClass("active");
$(this).tab('show');
})
現在,所選標籤確實變爲活動狀態。但是,由於某種未知的原因,當點擊About
時,它不會導航到About
頁面,而是保持在Index
。因此,我不得不將其更改爲@Html.ActionLink
,如下所示。
@Html.ActionLink("About", "About", "Home")
成功導航到About
頁面。但是,About
選項卡會在一秒鐘內激活並快速切換到Index
選項卡,但會顯示About
頁面中的內容。如下所示。
思想加入data-toggle
可以解決這個問題。所以我遵循給出的答案here。
@Html.ActionLink("About", "About", "Home", new { data_toggle="tab"})
然後它回到原點。除了突出顯示我選擇的選項卡外,它什麼都不做。我迷路了!我哪裏錯了?
首先刪除引導程序的JavaScript和CSS - 它看起來很糟糕,但現在忘了。導航是否加載您期望的頁面?接下來,閱讀[Bootstrap的導航](https://getbootstrap.com/docs/3.3/components/#nav)組件,然後重新引入javascript和css。導航組件應該不需要自定義腳本。 – Jasen
@Jasen刪除Bootstrap使導航沒有任何問題!所以問題出在我處理Bootstrap CSS的方式上。 – Akshatha