2013-08-22 4 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"); 
    } 

Когда я нажимаю на бревне из ссылок, в URL-шоу меня это ==>Account/LogOff

Но я хочу перенаправить на это ==>Account/Login

Кто-нибудь знает, что происходит?

+3

Это должен быть запрос HttpGet AFAIK, удалить атрибут HttpPost. Он перенаправляет вас на правильную веб-страницу? – VsMaX

ответ

4

В HTML анкерный элемент (<a>) отправляет запрос GET, а не POST, поэтому ваше действие контроллера [HttpPost] никогда не будет вызываться. Вы должны использовать HTML-формы с методом POST, если вы хотите, чтобы вызвать это действие:

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

Также обратите внимание, что я включил маркер AntiForgery внутри формы, потому что ваши действия контроллера украшен атрибутом [ValidateAntiForgeryToken] и, таким образом, ожидает его ,

+0

ah ok .. сейчас я понимаю. большое спасибо Дарин – user2232273

2

Удалите атрибут HttpPost и все должно быть в порядке.

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

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

спасибо Майкл. теперь работает – user2232273

Смежные вопросы