我在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 }
);
}
答案 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;"/