[英]ASP.NET mvc4 controller action not invoked
我在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 }
);
}
兩個輸入都具有type=submit
,因此在onclick
事件之后,都將調用父表單。
嘗試使用stopPropagation()
捕獲每個input
的onclick
事件,或者僅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;"/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.