我正在使用带有Web Api'扩展程序的默认MVC5 Web应用程序。该解决方案附带一个网络'帐户管理员,'网络'家庭控制器,一个' api'值控制器以及具有自己的控制器的“帮助”区域。帮助控制器在html中详述了我的api。
这都是默认值。
我的问题是当我在帮助区域时,我的一些操作链接(在顶部菜单上)不起作用。我期望顶级菜单(Login,ect)上的操作返回到默认的非区域路由,但他们没有。他们改为重定向到帮助区域。 "应用程序名称"导航到root工作,但联系人,关于,登录,注册(分机)不。
我尝试将操作链接更改为指向' null'区域,但这没有帮助。
@Html.ActionLink("Home", "Index", "Home", new { area = "" }, null)
当我在“帮助”区域内时,“操作链接”没有正确的URI。当我将鼠标悬停在主动作链接上时,它会将我重定向到localhost:port / Help。我希望操作链接重定向回默认控制器路由(无区域,主页/帐户控制器)。
LoginPartial
@using Microsoft.AspNet.Identity
@if (Request.IsAuthenticated)
{
using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
{
@Html.AntiForgeryToken()
<ul class="nav navbar-nav navbar-right">
<li>
@Html.ActionLink("Hello " + User.Identity.GetUserName() + "!", "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" })
</li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>
}
}
else
{
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink", area = "" })</li>
<li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink", area = "" })</li>
</ul>
}
答案 0 :(得分:1)
我唯一可以确定LoginPartial
中可能的罪魁祸首是area
中的htmlAttributes
属性而不是routeValues
。但是我猜这可能是尝试不同的事情。
修改routeValues
似乎对我有用:
@if (Request.IsAuthenticated)
{
using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
{
@Html.AntiForgeryToken()
<ul class="nav navbar-nav navbar-right">
<li>
@Html.ActionLink("Hello " + User.Identity.GetName() + "!", "Manage", "Account", routeValues: new { area = "" }, htmlAttributes: new { title = "Manage" })
</li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>
}
}
else
{
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("Register", "Register", "Account", routeValues: new { area = "" }, htmlAttributes: new { id = "registerLink" })</li>
<li>@Html.ActionLink("Log in", "Login", "Account", routeValues: new { area = "" }, htmlAttributes: new { id = "loginLink" })</li>
</ul>
}