MVC5路由到空区域不起作用

时间:2014-05-28 20:48:38

标签: asp.net-mvc asp.net-mvc-areas

我正在使用带有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>
}

1 个答案:

答案 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>
}