ASP.NET mvc4控制器操作未被​​调用

时间:2016-05-13 13:16:31

标签: asp.net-mvc-4 onclick html-form-post

我在HomeController中定义了以下方法:

[HttpPost]
public ActionResult Validate(AccountRegisterModel accountRegisterModel)
{
   // do something
}

[HttpPost]
public ActionResult Create(AccountRegisterModel accountRegisterModel)
{
   // do something else
}

我在视图中定义了这些HTML行。

<input name="submit" type="submit" value="Create" class="btn btn-info" onclick="location.href='@Url.Action("Validate", "Home")'"/>
<input name="validate" type="submit" value="Create" class="btn btn-info" onclick="location.href='@Url.Action("Validate", "Home")'"/>

当我运行应用程序并单击两个按钮时,始终会调用控制器上的“创建”操作。这是什么交易?

我正在使用如下定义的默认路由:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

1 个答案:

答案 0 :(得分:0)

两个输入都有type=submit,因此在onclick事件之后,两者都会调用父表单。

尝试使用onclick或仅input

捕获每个stopPropagation()上的return false;个事件
<input name="submit" type="submit" value="Create" class="btn btn-info" 
    onclick="location.href='@Url.Action("Validate", "Home")'; return false;"/>
<input name="validate" type="submit" value="Create" class="btn btn-info" 
    onclick="location.href='@Url.Action("Validate", "Home")'; return false;"/