2013-04-17 13 views
6

Nel mio controller non ho classe AccountController ed entro in ho questo metodoasp.net mvc metodo 4 chiamata dal controller pulsante

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

Nel mio punto di vista devo pagina cshtml con il corpo e questa parte del codice

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

E questo non funziona, qualcuno sa qual è il problema o qualche altra soluzione semplice?

risposta

4

non stai riferimento al metodo di azione qui:

action="Controllers/AccountController" 

Tanto per cominciare, non è necessario specificare Controllers/ perché il quadro troverà il controller per voi. In effetti, la nozione di una "cartella" di controllori non è nota al client/URL/ecc. Quello che devi dargli è un "percorso" per il metodo di azione specifico.

Poiché il framework MVC sa dove i controllori sono, basta dire che quale controller e quale metodo di azione su tale controller:

action="Account/LogOff" 
5

L'attributo action punta a un'azione di controller errata. L'azione del controller è denominata LogOff e non AccountController. Non si dovrebbe mai essere la costruzione manualmente <form> elementi del genere, ma di utilizzare sempre gli aiutanti html che sono stati progettati per questo scopo:

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

L'azione modulo dovrebbe probabilmente essere /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> 

provare a mettere questo in .cshtml File:

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