У меня есть новое приложение MVC 4, с которым я играю. В принципе, несколько пунктов меню в верхнем, с текущим активной страницей, которая выделен с последующей JavaScript в моем _Layout.cshtml
:Перенаправленный вид не отображает «активный» атрибут в приложении MVC
<script type="text/javascript">
$(document).ready(function() {
$('#top-navbar .nav a[href="' + this.location.pathname + '"]').parent().addClass('active');
});
</script>
Это прекрасно работает при навигации по меню в верхнем. Однако я добавляю возможность «входа», и если пользователь попытается вернуться на страницу входа после того, как они уже вошли в систему, он просто отправит их в виде Index
вместо Login
. Проблема в том, что CSS по-прежнему выделяет кнопку Login
в меню, а не кнопку Home
.
Я сохраняю данные для входа пользователя через состояние Session
. Вот Login()
ActionResult
:
[HttpGet]
public ActionResult Login()
{
if (Session["ContactName"] != null)
{
return View("Index");
}
else
{
return View();
}
}
Как вы можете видеть, если ContactName
не null
, то они уже вошли в систему, поэтому он посылает им Home
вид. Должен ли я вместо этого Redirect()
на главную страницу?
Кроме того, здесь есть меню navbar
при необходимости:
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About Us", "About", "Home")</li>
<li>@Html.ActionLink("Customer Login", "Login", "Home")</li>
</ul>
Вы должны вернуть 'RedirectToAction («Index»,«Home»)'. То, что у вас есть, просто использует представление «Индекс», но URL-адрес все равно будет отражать состояние «Вход». – Jasen