Asp.net 区域内MVC 5注销表单未生成操作链接

Asp.net 区域内MVC 5注销表单未生成操作链接,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我有以下代码用于在区域“Admin”的布局中创建表单。如果我没有将该区域设置为空白,则表单的操作将被设置(尽管它包括该区域),但一旦我将该区域设置为“”或其他相关内容,该操作即为空白 @using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm" })) { @Html.AntiForgeryToken() <a href="ja

我有以下代码用于在区域“Admin”的布局中创建表单。如果我没有将该区域设置为空白,则表单的操作将被设置(尽管它包括该区域),但一旦我将该区域设置为“”或其他相关内容,该操作即为空白

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

    <a href="javascript:document.getElementById('logoutForm').submit()">Log Out <i class="fa fa-sign-out right"></i></a>
}

有人能看出这里出了什么问题吗?谢谢。

这可能是您的项目结构+路由配置的组合。如果你能提供这些东西,它将有助于提供答案。暗箱操作是指当您设置区域时,它与路由表中的路由不匹配,或者如果您有默认路由设置;您的帐户管理员不在管理区域。谢谢,我已经添加了我的路由配置-您希望项目结构有什么样的详细信息?有一个名为“Admin”的区域,其中包含链接(根据问题),帐户控制器位于根目录中(即,不在区域中)。很乐意提供任何有帮助的信息。我认为你的默认路线不是你认为它应该做的。我用您的默认路线替换了我唯一的路线(您已注释掉的路线),并且我无法导航到应用程序中的任何页面。我不确定您的目标是以这种方式配置路由,因此除了阅读更多关于路由的内容外,我没有其他任何建议:默认路由正在处理类似CMS的行为,在这些行为中,除上述定义的路由之外的所有内容都将放在默认控制器中,细分段并从CMS显示相应页面的位置。所以你是对的,仅仅通过复制并粘贴到一个新项目中是不可行的,因为它确实会将每个请求发送到主页。问题是,我已经为/Account/*定义了一个要正确处理的路由,所以我希望controller“Account”中的“LogOff”操作能够正常工作。它可能是您的项目结构+路由配置的组合。如果你能提供这些东西,它将有助于提供答案。暗箱操作是指当您设置区域时,它与路由表中的路由不匹配,或者如果您有默认路由设置;您的帐户管理员不在管理区域。谢谢,我已经添加了我的路由配置-您希望项目结构有什么样的详细信息?有一个名为“Admin”的区域,其中包含链接(根据问题),帐户控制器位于根目录中(即,不在区域中)。很乐意提供任何有帮助的信息。我认为你的默认路线不是你认为它应该做的。我用您的默认路线替换了我唯一的路线(您已注释掉的路线),并且我无法导航到应用程序中的任何页面。我不确定您的目标是以这种方式配置路由,因此除了阅读更多关于路由的内容外,我没有其他任何建议:默认路由正在处理类似CMS的行为,在这些行为中,除上述定义的路由之外的所有内容都将放在默认控制器中,细分段并从CMS显示相应页面的位置。所以你是对的,仅仅通过复制并粘贴到一个新项目中是不可行的,因为它确实会将每个请求发送到主页。问题是,我已经为/Account/*定义了一个要正确处理的路由,所以我希望控制器“Account”中操作“LogOff”的操作能够正常工作。
<form action="" id="logoutForm" method="post">
    <input name="__RequestVerificationToken" type="hidden" value="blahblah">
    <a href="javascript:document.getElementById('logoutForm').submit()">Log Out <i class="fa fa-sign-out right"></i></a>
</form>
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Account",
        "account/{action}/{id}",
        new { controller = "Account", id = "" }
    );

    routes.MapRoute(
        "LayoutPartials",
        "partials/{action}",
        new { controller = "Partials" }
    );

    routes.MapRoute(
        "Default",
        "{*segments}",
        new { controller = "Default", action = "Index", segments = UrlParameter.Optional }
    );

    //routes.MapRoute(
    //    "Default",                                              // Route name
    //    "{controller}/{action}/{id}",                           // URL with parameters
    //    new { controller = "Default", action = "Index", id = "" }  // Parameter defaults
    //);
}