2013-04-17 67 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> 
}