从区域内部的视图访问根控制器动作在区域=“0”时不起作用&”;

本文关键字:区域 不起作用 视图 内部 访问 控制器 | 更新日期: 2023-09-27 18:20:03

我在一个名为"应用程序"的区域内的视图中。

在这个视图中,我有这个链接:

@using (Html.BeginForm("LogOff","Account", FormMethod.Post, new { area = "",  id = "logoutForm", @class = "navbar-right" }))
{
    @Html.AntiForgeryToken()
    <ul class="nav navbar-nav navbar-right">
        <li>
            @Html.ActionLink("Hello " + User.Identity.GetUserName() + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
        </li>
        <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
    </ul>
}

此ActionLink指的是具有操作"注销"的根控制器"AccountController"。

当我提交表单时,浏览器会在URL栏中显示:

http://localhost:61774/Application/Account/LogOff

但该路由不存在,因为尽管我设置了area = "" ,但它确实not在根控制器中查找

为什么它不起作用?

从区域内部的视图访问根控制器动作在区域=“0”时不起作用&”;

您正在使用Html.BeginForm()的此重载,它将area添加为html属性,而不是路由值。您需要使用此重载来添加路由值

@using (Html.BeginForm("LogOff","Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))