2013-08-22 74 views
2

我正在使用用户登录页面处理MVC 4项目。它一切正常。重定向url不是正确的

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

下面是代码,以更好地解释:

查看:

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

控制器:

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

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

当我点击注销链接,网址秀我这==>Account/LogOff

但是我想重定向到这个==>Account/Login

有没有人知道发生了什么事?

+3

这应该是HttpGet请求AFAIK,删除HttpPost属性。它是否会将您重定向到正确的网页? – VsMaX

回答

4

在HTML中,锚元素(<a>)发送GET请求,而不是POST,因此您的[HttpPost]控制器操作将永远不会被调用。如果你想调用这个动作,你应该使用POST方法的HTML表单:

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

还要注意,我包括在该表单内的防伪标记,因为你的控制器动作装饰与[ValidateAntiForgeryToken]属性,因此期待它。

+0

啊好吧..现在我明白了。非常感谢你Darin – user2232273

2

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

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

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

谢谢Michael。它的工作现在 – user2232273