重定向视图未显示“活动”;属性
Redirected View not displaying "active" attribute in MVC application
我有一个新的MVC 4应用程序,我正在玩。基本上,顶部有几个菜单项,当前活动的页面用以下JavaScript在我的_Layout.cshtml
中突出显示:
<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>
问题是您的客户端仍然将URL视为/Login
而不是索引,因此您最好重定向用户。您可以使用RedirectToAction
controller方法并为它指定返回索引视图的控制器和操作名称:
[HttpGet]
public ActionResult Login()
{
if (Session["ContactName"] != null)
{
return RedirectToAction("Index", "Home");
}
else
{
return View();
}
}
你可以删除设置活动菜单的JQuery,并在你的导航栏标签中使用它:
<ul class="nav navbar-nav">
<li class="@(ViewContext.RouteData.Values["Action"].ToString() == "Index" ? "active" : "")">@Html.ActionLink("Home", "Index", "Home")</li>
<li class="@(ViewContext.RouteData.Values["Action"].ToString() == "About" ? "active" : "")">@Html.ActionLink("About", "About", "Home")</li>
<li class="@(ViewContext.RouteData.Values["Action"].ToString() == "Contact" ? "active" : "")">@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
或者你可以实现一些HtmlHelper来做同样的事情,就像这篇文章中显示的那样:http://chrisondotnet.com/2012/08/setting-active-link-twitter-bootstrap-navbar-aspnet-mvc/
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 无法仅在活动服务器上读取未定义错误的属性“top”
- 如何仅在活动选项卡中获取选定选项的属性
- Bootstrap/AngularJs:如何为导航类的活动选择设置粗体属性
- 如何在幻灯片加载时更改活动项的CSS属性
- 查找所选元素的所有CSS类规则列表(来自多个样式表)及其活动属性
- 如何激活基于数据活动属性的jQuery UI Accordion ?
- 通过另一个指令向元素动态添加指令属性,并使第一个'活动'
- javascript:如何仅在父元素处于活动状态且子元素具有特定类的情况下向子元素添加属性
- ReactNative 活动指示器在动画属性启动 false 时不显示
- 重定向视图未显示“活动”;属性