.net多个表单在一页问题上

时间:2013-09-26 09:19:28

标签: c# .net asp.net-mvc

我有多种形式的视图

@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();
        }

我要做的是在此控制器中单独进行提款,存款和转账。 我一直收到这个错误

无法找到资源。

描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/ ATMControl / Withdrawal

3 个答案:

答案 0 :(得分:1)

当按名称引用控制器时,不应包含名称的“控制器”部分。例如,如果您的控制器类被称为ATMController,那么您应该仅使用"ATM"来引用它,如下所示:

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

这将转换为以下网址:/ATM/Withdrawal

我目前无法找到一个链接,为您提供有关其原因的更多信息,但是您应该知道MVC框架在确定哪个类合适时会隐式包含名称的“Controller”部分

答案 1 :(得分:0)

在页面中使用多个 Html.BeginForm()没有问题。

您的代码看起来不错,因此如果您的控制器名为 ATMControlController ,则不应该获得404.

尝试使用没有最后一个参数的BeginForm重载,在这种情况下没用。

确保构建您的项目。这是一个微不足道的建议,但是只保存View是一个常见的错误(就像在ASP.NET WebForms中一样)。

请发布更多代码以获取进一步的帮助。

答案 2 :(得分:0)

如果你的控制器名称正好是/ATM/Withdrawal/,那么

使用ATMController,这意味着

RouteName + Controller =RouteNameController

then 

/RouteName/ActionName