Javascript 重定向视图不显示“0”;主动的;MVC应用程序中的属性

Javascript 重定向视图不显示“0”;主动的;MVC应用程序中的属性,javascript,c#,asp.net-mvc-4,razor,Javascript,C#,Asp.net Mvc 4,Razor,我正在使用一个新的MVC4应用程序。基本上,顶部有几个菜单项,当前活动页面用my\u Layout.cshtml中的以下JavaScript突出显示: <script type="text/javascript"> $(document).ready(function () { $('#top-navbar .nav a[href="' + this.location.pathname + '"]').parent().addClass('active');

我正在使用一个新的MVC4应用程序。基本上,顶部有几个菜单项,当前活动页面用my
\u Layout.cshtml中的以下JavaScript突出显示:

<script type="text/javascript">
    $(document).ready(function () {
        $('#top-navbar .nav a[href="' + this.location.pathname + '"]').parent().addClass('active');
    });
</script>
如您所见,如果
ContactName
不是
null
,则他们已经登录,因此它会向他们发送
主页
视图。我应该改为
重定向()
到主页面吗

此外,如果需要,这里还有菜单
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>
  • @ActionLink(“主页”、“索引”、“主页”)
  • @ActionLink(“关于我们”、“关于”、“家”)
  • @ActionLink(“客户登录”、“登录”、“主页”)

您可以删除用于设置活动菜单的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>
  • @Html.ActionLink(“Home”、“Index”、“Home”)
  • @Html.ActionLink(“About”、“About”、“Home”)
  • @Html.ActionLink(“Contact”、“Contact”、“Home”)
或者你也可以实现一些HtmlHelper来做同样的事情,如本文所示:

您可以删除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>
  • @Html.ActionLink(“Home”、“Index”、“Home”)
  • @Html.ActionLink(“About”、“About”、“Home”)
  • @Html.ActionLink(“Contact”、“Contact”、“Home”)
或者你也可以实现一些HtmlHelper来做同样的事情,如本文所示:
问题在于,客户端仍然将URL视为
/Login
而不是索引,因此最好重定向用户。可以使用controller方法执行此操作,并为其指定返回索引视图的控制器和操作名称:

[HttpGet]
public ActionResult Login()
{
    if (Session["ContactName"] != null)
    {
        return RedirectToAction("Index", "Home");
    }
    else
    {
        return View();
    }
}

问题是,客户端仍然将URL视为
/Login
而不是索引,因此最好重定向用户。可以使用controller方法执行此操作,并为其指定返回索引视图的控制器和操作名称:

[HttpGet]
public ActionResult Login()
{
    if (Session["ContactName"] != null)
    {
        return RedirectToAction("Index", "Home");
    }
    else
    {
        return View();
    }
}

您应该返回一个
重定向到操作(“索引”、“主页”)
。您只需使用索引视图,但url仍将反映登录状态。您应该返回一个
重定向操作(“索引”,“主页”)
。您只需使用索引视图,但url仍将反映登录状态。啊,
RedirectToAction()
正是我要找的!啊,
RedirectToAction()
正是我想要的!这很有效。我试图找到一个好的解决方案,而JQuery是以前我能想到的最简单的解决方案。这一个很好,不需要任何脚本!这很有效。我试图找到一个好的解决方案,而JQuery是以前我能想到的最简单的解决方案。这一个很好,不需要任何脚本!