重定向网址不正确

时间:2013-08-22 16:13:28

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我正在使用用户登录页面开发MVC 4项目。一切正常。

问题是当我点击链接注销时,重定向网址不正确。

以下是更好解释的代码:

查看:

<a href="@Url.Action("LogOff", "Account")">Logout ?</a>

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
  {
     WebSecurity.Logout();

      return RedirectToAction("Login", "Account");
  }

当我点击退出链接时,网址显示我==&gt; Account/LogOff

但我想重定向到这个==&gt; Account/Login

有谁知道发生了什么事?

2 个答案:

答案 0 :(得分:4)

在HTML中,锚元素(<a>)发送GET请求,而不是POST,因此永远不会调用[HttpPost]控制器操作。如果要调用此操作,则应使用带有POST方法的HTML表单:

@using (Html.BeginForm("LogOff", "Account", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    <button type="submit">Logout ?</button>
}

另请注意,我在表单中包含了一个AntiForgery令牌,因为您的控制器操作是使用[ValidateAntiForgeryToken]属性修饰的,因此期待它。

答案 1 :(得分:2)

删除HttpPost属性,一切都应该没问题。

[ValidateAntiForgeryToken]
public ActionResult LogOff()
  {
     WebSecurity.Logout();

      return RedirectToAction("Login", "Account");
  }