2015-07-20 3 views
2

У меня есть пять вкладок, которые используют Bootstrap для анимации. Они отлично работали, пока я не добавил последнюю вкладку: «Управление». Когда я нажимаю на вкладку «Управление», вкладка «СуперАдмин» отображается как еще активная в навигаторе. Но когда я нажимаю на вкладку SuperAdmin, у меня нет такой же проблемы. Вкладка управления затем неактивна. Таким образом, проблема только в одном случае. Я сделал некоторую копию и вставку с этой вкладки, когда я создал вкладку «Управление», потому что дизайн был похож. Я предполагаю, что это вызывает проблему, но я не могу найти точную проблему.Две вкладки Bootstrap отображаются сразу

Я попытался удалить активный класс из вкладки SuperAdmin, когда вкладка Управление была нажата, но это не похоже на работу:

<script> 
$("#management").click(function() { 
    $("#super-admin").removeClass("active"); 
}); 

When Super Admin tab is selected

When Management tab is selected

Это навигация:

<ul class="nav nav-tabs" id="navTabs"> 

<li @(Request.Url.AbsoluteUri.Contains("Create") ? Html.Raw("class=\"active\"") : Html.Raw("")) > @Html.ActionLink("Add Record", "Create", "Home")</li> 

<li @(Request.Url.AbsoluteUri.Contains("Search") ? Html.Raw("class=\"active\"") : Html.Raw("")) >@Html.ActionLink("Search", "Search", "Home")</li> 

@if (User.IsInRole("Admin") || User.IsInRole("SuperAdmin") || User.IsInRole("Manager")) 
     { 
      <li @(Request.Url.AbsoluteUri.Contains("Category") ? Html.Raw("class=\"active\"") : Html.Raw("")) >@Html.ActionLink("Admin", "Index", "Category")</li> 
     } 

@if (User.IsInRole("SuperAdmin") || User.IsInRole("Manager")) 
     { 
      <li @(Request.Url.AbsoluteUri.Contains("SuperAdmin") ? Html.Raw("class=\"active\"") : Html.Raw("")) >@Html.ActionLink("SuperAdmin", "Index", "SuperAdmin")</li> 
     } 
@if (User.IsInRole("Manager")) 
     { 
      <li @(Request.Url.AbsoluteUri.Contains("Management") ? Html.Raw("class=\"active\"") : Html.Raw(""))>@Html.ActionLink("Management", "Index", "Management")</li> 
     } 
     <li >@Html.ActionLink("Logoff", "Logoff", "Home")</li> 

    </ul> 

Лучшее, что я мог сделать, чтобы показать это в jsFiddle:

суперадминистратор выбран Выбрана

https://jsfiddle.net/s3f3cjon/

Управление:

https://jsfiddle.net/9sd1faub/3/

Вы можете видеть, что На вкладке Super Admin все еще активен класс.

Любая помощь будет оценена по достоинству. Благодаря!

+1

Вы могли бы воспроизвести проблему на jsfiddle, http://jsfiddle.net – dreamweiver

+0

Несомненно, я отправлю его через несколько минут – cfly24

+0

Из-за элементов .net, которые я использую, я не могу реплицировать в jsFiddle. Я мог бы добавить любой другой код, если это необходимо здесь, если вы считаете, что ошибка отсутствует в кодовом блоке, показанном выше.Я добавил несколько фотографий для ясности. – cfly24

ответ

1

Ошибка произошла, потому что я проверял, содержит ли Абсолют Ури слово «Управление», которое было верно для обеих вкладок. Вместо того, чтобы переходить и изменять имя моего контроллера, я просто изменил маршрутизацию на новое имя «SuperAdmin».

Так что в моем RouteConfig я сопоставляются маршрут контроллера для SuperAdmin:

  routes.MapRoute(
      "ManageRoute", 
      "SuperAdmin/{id}", 
      new { controller = "Manage", action = "Index", id = UrlParameter.Optional } 
      ); 

Затем проверяется, чтобы увидеть, если Uri содержал, что вместо того, чтобы:

<li @(Request.Url.AbsoluteUri.Contains("SuperAdmin") 

Это исправили проблему сейчас.

0

Вы просматриваете Request.Url.AbsoluteUri.Contains("Management") при нажатии на вкладку «Управление».

Может ли быть, что URL-адрес содержит слово SuperAdmin или Admin в пути при переходе на вкладку «Управление»?

Попробуйте отладить приложение и проверьте наличие Request.Url.AbsoluteUri.

Смежные вопросы