ASP.NET MVC 4 表单无法注销

Posted

技术标签:

【中文标题】ASP.NET MVC 4 表单无法注销【英文标题】:ASP.NET MVC 4 form cannot logout 【发布时间】:2013-12-21 08:39:54 【问题描述】:

我一直在摆弄默认 MVC 4 模板的 _Layout 和 _PartialLayouts,突然 '_PartialLogin' 文档中的 'Logout' 功能停止工作。

代码是:

@if (Request.IsAuthenticated) 
<text>
<p>Hello, @html.ActionLink(User.Identity.Name, "Manage", "Account", routeValues: null, htmlAttributes: new  @class = "username", title = "Manage" )!
@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new  id = "logoutForm" )) 
    @Html.AntiForgeryToken()
    <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
</p>
</text>
 

是否有可能无意中禁用了javascript。我可能错过了一些脚本标签吗?或者是我在上一课中调用 _PartialLogin 的地方吗??

【问题讨论】:

在firefox中运行它并打开错误控制台,看看是否存在阻止正确执行的javascript错误 控制器被调用了吗? 你为什么要这样做 @DanielA.White:默认模板是这样做的,不是用户编写的。这里有一些简短的讨论:***.com/questions/13602269/… 基本上 ASP.NET MVC 设计者希望它是一个 POST 操作。 @DanielA.White 因为注销用户应该通过 POST 请求完成 【参考方案1】:

解决了问题...

您不能将 javascript 文本放在 &lt;form&gt; 标记中。它将无法工作,因为引导程序会弄乱它。

在彼此之间调用partialLayouts 的次数无关紧要 - 请注意您在其中嵌入了 javascript 的标签

【讨论】:

以上是关于ASP.NET MVC 4 表单无法注销的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 4 无法从表单中检索文件

ASP.Net 4.5 注销/登录失败

ASP.NET MVC 4 默认 _LoginPartial 模板注销不起作用

新手轻松学会MVC

ASP.net 2.2 MVC:注销

Asp.Net MVC 2中会话超时时的确认