2013-04-17 8 views
6

W moim kontrolerów mam klasy AccountController i wewnątrz w mam tej metodyasp.net mvc metoda 4 wywołujący ze sterownika za pomocą przycisku

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult LogOff() 
{ 
    WebSecurity.Logout(); 
    return RedirectToAction("Index", "Home"); 
} 

W moich poglądów mam cshtml stronę z ciała i tę część kodu

<form class="float_left" action="Controllers/AccountController" method="post"> 
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button> 
</form> 

A to nie działa, każdy wie, co jest problem lub inne proste rozwiązanie?

Odpowiedz

4

Nie odwołujesz się do metody działania tutaj:

action="Controllers/AccountController" 

Na początek nie trzeba podawać Controllers/, ponieważ framework znajdzie dla ciebie kontroler. W rzeczywistości pojęcie "folderu" kontrolerów nie jest znane klientowi/URL/etc. To, czego potrzebujesz, to "droga" do konkretnej metody działania.

Ponieważ framework MVC wie gdzie kontrolerzy są, trzeba tylko powiedzieć to sposób działania, który kontroler i która na tym kontrolerze:

action="Account/LogOff" 
5

Atrybut action wskazuje na niewłaściwą akcję kontrolera. Twoje działanie kontrolera nazywa się LogOff, a nie AccountController. Nigdy nie powinno być ręcznie budowania <form> elementów, takich jak to, ale zawsze korzystać z pomocników HTML, które są przeznaczone do tego celu:

@using (Html.BeginForm("LogOff", "Account")) 
{ 
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button> 
} 
0

Akcja forma powinna prawdopodobnie /Account/LogOff

< form class="float_left" action="/Account/Logoff" method="post"> 
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button> 
</form> 

Spróbuj umieścić to w .cshtml file:

@using (Html.BeginForm("LogOff", "Account")) 
{ 
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button> 
} 
Powiązane problemy