Asp.net 区域内MVC 5注销表单未生成操作链接
我有以下代码用于在区域“Admin”的布局中创建表单。如果我没有将该区域设置为空白,则表单的操作将被设置(尽管它包括该区域),但一旦我将该区域设置为“”或其他相关内容,该操作即为空白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
@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
//);
}