首页 > 解决方案 > 在 Html.BeginForm 的 onsubmit 参数中使用 return 的目的是什么?

问题描述

在 ASP.NET MVC 剃须刀视图中,我在单击按钮时提交了一个表单。如果我在 onsubmit 参数上指示“返回”,它的行为与如果我不指示“返回”不同。

因此,如果我将 BeginForm 参数化如下:

Html.BeginForm("", "", FormMethod.Post, new { id = "myForm", onsubmit = "return doAction();", @class = "well" })

它的行为与下面的不同:

Html.BeginForm("", "", FormMethod.Post, new { id = "myForm", onsubmit = "doAction();", @class = "well" })

那么使用return或不使用return的目的是什么?

标签: javascriptasp.net-mvchtml-helperhtml.beginform

解决方案


onsubmit = "doAction();"

doAction(){
   alert("Hello World!");
}

^ 这样做只是执行您的函数,并且由于doAction()不会阻止事件执行默认过程,因此表单将提交。


onsubmit = "return doAction();"

doAction(){
   alert("Hello World!");
   return false; // form will not submit
   // return true; // form will submit
}

^ 这将执行您的函数,如果您的函数返回一个false布尔值,它将阻止表单提交。


要查看它们的确切不同之处,请尝试onsubmit="doAction()"使用返回的函数false

onsubmit = "doAction();"

doAction(){
   alert("Hello World!");
   return false; // the form will still submit
}

表单仍然会提交,因为尽管函数返回,但您没有指明return关键字false。关键字将return指示表单首先检查函数返回的值。


推荐阅读