【问题标题】:ASP.NET mvc4 controller action not invoked未调用 ASP.NET mvc4 控制器操作
【发布时间】:2016-05-13 13:16:30
【问题描述】:

我在 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")'"/>

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

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

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

【问题讨论】:

    标签: asp.net-mvc-4 onclick forms http-post


    【解决方案1】:

    两个输入都有一个type=submit,所以在onclick 事件之后,都调用父表单。

    尝试使用stopPropagation() 或仅使用return false; 在每个input 上捕获onclick 事件

    <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;"/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多