我有多种形式的视图
@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
答案 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