2013-08-22 115 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