2013-09-26 105 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 
相关问题