2013-04-17 8 views
6

私はクラスAccountControllerを持っており、中の中に、私はこの方法で私の見解でボタンでasp.netコントローラからMVC 4呼び出し方法私のコントローラで

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

を持っている私はCSHTMLボディを持つページやコード

のこの部分を持っています
<form class="float_left" action="Controllers/AccountController" method="post"> 
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button> 
</form> 

これは機能しません。だれでも問題やその他の簡単な解決策を知っていますか?

答えて

4

ここでアクションメソッドを参照していません:

action="Controllers/AccountController" 

Controllers/を指定する必要はありません。フレームワークでコントローラが見つかるからです。実際、コントローラの「フォルダ」という概念はクライアント/ URL /などには知られていません。あなたがそれを与える必要があるのは、特定の行動方法への「ルート」です。

MVCフレームワークは、コントローラがどこにあるか知っているので

は、あなたが必要とするだけで、そのコントローラ上のコントローラとアクションメソッドにそれを伝える:

action="Account/LogOff" 
5

action属性が間違ったコントローラアクションを指しています。コントローラの動作はLogOffで、AccountControllerではありません。手動でそのような<form>要素を構築していないが、常にこの目的のために設計されたHTMLヘルパーを使用することは絶対に避けてください:

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

フォームアクションはおそらく/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> 

.cshtmlでこれを入れてみてくださいする必要がありますファイル:

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