2016-05-13 42 views
0

我在HomeController的定義如下方法:ASP.NET mvc4控制器動作不會被調用

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

回答

0

兩個輸入端有一個type=submit,所以onclick事件發生後,都調用父窗體。

試着用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;"/ 
捕捉每個 inputonclick事件
相關問題