2013-09-26 104 views
1

我有多種形式.NET多個表單在一個頁面上的問題

@using (Html.BeginForm("Withdrawal", "ATMControl", FormMethod.Post, new {})) 
{ 
//code 
} 

@using (Html.BeginForm("Deposit", "ATMControl", FormMethod.Post, new {})) 
{ 
//code 
} 

@using (Html.BeginForm("transfer", "ATMControl", FormMethod.Post, new {})) 
{ 
//code 
} 

在我的控制器視圖:

//this works 
public ActionResult Index() 
     { 
       SetViewBagAccounts(); 
       return View(); 
     } 

//this doesnt 

     [HttpPost] 
     public ActionResult Withdrawal(ATMModel model) 
     { 
      //do your login code here 
      return View(); 
     } 

什麼,我試圖做的是過程取款,存款和轉移indiviually在這個控制器中。 我不斷收到此錯誤

找不到資源。

說明:HTTP 404.您正在查找的資源(或其某個依賴項)可能已被刪除,名稱已更改或暫時不可用。請檢查以下網址並確保它拼寫正確。

請求的URL:/ ATMControl /退學

+2

什麼是你的控制器的名稱? – musefan

+0

ATMController。我拼錯了我的控制器,但我做了修復,仍然是相同的錯誤 – kayze

+0

您需要刪除「控制器」部分,只需在使用「ATM」時提及控制器。 MVC的魔術將解決 – musefan

回答

1

當通過名稱引用控制器時,不應該包含名稱的「控制器」部分。例如,如果你的控制器類叫做ATMController,那麼你應該引用它僅僅使用"ATM",像這樣:

@using (Html.BeginForm("Withdrawal", "ATM", FormMethod.Post, new {})) 
{ 
} 

這將轉化到以下網址:/ATM/Withdrawal

我無法找到在一個鏈接現在要給你提供更多關於爲什麼這樣工作的信息,但是你應該知道MVC框架在確定哪個類是合適的時候會隱含地包​​含名稱的「Controller」部分。

+0

再次感謝 – kayze

0

有使用比在頁面Html.BeginForm()更沒有問題。

您的代碼看起來不錯,所以如果你的控制器被命名爲ATMControlController你不應該得到一個404

嘗試使用BeginForm過載而沒有最後一個參數,就是在這種情況下無用。

請確保構建您的項目。這是一個微不足道的建議,但僅保存視圖(如在ASP.NET WebForms中)是常見的錯誤。

請發佈更多代碼以獲得進一步幫助。

+0

在我看來,我錯過了我的控制器。我的控制器被稱爲ATMController,但它仍然不工作,同樣的錯誤 – kayze

0

使用/ATM/Withdrawal/如果你的控制器名稱是完全ATMController,這意味着

RouteName + Controller =RouteNameController 

then 

/RouteName/ActionName 
相關問題