ASP.net MVC无法调用POST Logout方法

时间:2017-06-21 08:45:38

标签: asp.net-mvc asp.net-mvc-4 razor

我一直在尝试执行Logout操作(使用Cookie进行表单身份验证)但无法调用POST Logout操作方法。

这是我的部分视图:

<nav class="navbar navbar-inverse" role="navigation">
  <div class="container">
    <div class="nav navbar-nav navbar-right">
      @using (Html.BeginForm("Logoff", "Account", FormMethod.Post, new { id = "logoutForm" })) 
     { 
     @Html.AntiForgeryToken()
      <a class="navbar-brand" href="javascript:document.getElementById('logoutForm').submit()" title="Logout">
        <img alt="Home" src="@Url.Content(" ~/Images/logout.png ")"/>

      </a>
      }

    </div>

  </div>

</nav>

我在主页下面将此部分视图称为标题:

<header role="banner">

    @Html.Partial("_HomeHeader")

</header>

<div class="container">
.......
</div>

在我的帐户控制器中,我定义了以下操作方法:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Logoff()
{    
      FormsAuthentication.SignOut();
      Session.Clear();
      return Redirect(FormsAuthentication.LoginUrl);                
}

因此,在单击主页上的“注销”按钮时,应该转到“注销”操作方法并清除cookie,然后重定向到“登录页面”。 但它不起作用。 相反,它直接进入登录页面而不访问Logoff操作方法。我有这个网址: http://localhost/Account/Login?ReturnUrl=%2FAccount%2FLogoff

有人可以提供有关如何实现此功能的意见吗?

2 个答案:

答案 0 :(得分:0)

我知道你已经在这个过程中了,但你可以在动作控制器中使用WebSecurity方法而不是你的动作方法...(OathWebsecurity,WebSecurity.Logout(); ...等等)

答案 1 :(得分:-1)

尝试下面的代码,希望它有帮助。

<a class="navbar-brand" href="javascript:submitform()" title="Logout">
    <img alt="Home" src="@Url.Content(" ~/Images/logout.png ")"/>
  </a>


 <script type="text/javascript">
  function submitform()
  {
    $("#logoutForm").submit();
  }   
</script>