如何在表单提交后执行Javascript
我有一个Asp.Net核心应用程序,我正在提交这样一个表单:如何在表单提交后执行Javascript,javascript,asp.net,asp.net-core,.net-core,Javascript,Asp.net,Asp.net Core,.net Core,我有一个Asp.Net核心应用程序,我正在提交这样一个表单: @using (Html.BeginForm("MyMethod", "Action", FormMethod.Post) { <button type="submit">RunMyMethod</button> } 有办法做到这一点吗?我在想,BeginForm可能有某种形式的回调选项(但我看不到)。我假设处理表单post的控制器方法返回一个视图模型。通过布尔
@using (Html.BeginForm("MyMethod", "Action", FormMethod.Post)
{
<button type="submit">RunMyMethod</button>
}
有办法做到这一点吗?我在想,BeginForm可能有某种形式的回调选项(但我看不到)。我假设处理表单post的控制器方法返回一个视图模型。通过布尔属性
RenderMyScript
扩展该视图模型,该属性指示应包含脚本。将其设置为true
然后,在视图中检查布尔值:
@if (Model.RenderMyScript)
{
@section Scripts {
function functionWorked() {
alert('This worked!');
}
}
}
我假设处理表单post的控制器方法返回一个视图模型。通过布尔属性
RenderMyScript
扩展该视图模型,该属性指示应包含脚本。将其设置为true
然后,在视图中检查布尔值:
@if (Model.RenderMyScript)
{
@section Scripts {
function functionWorked() {
alert('This worked!');
}
}
}
我不得不说,当表格提交时,你的页面被切换掉了。因此,在表单成功提交后,您永远无法在其上执行任何javascript 但是,您可以覆盖表单的提交事件 如果用户提交表单:
- 阻止浏览器切换页面李>
- 请自行提交数据
- 触发你的成功方法
@节脚本{
$('form')。提交(函数(e){
e、 预防默认值();
$.ajax({
类型:$(this.attr('method'),
url:$(this.attr('action'),
数据:$(this).serialize(),
成功:功能(数据){
警惕(“这起作用了!”);
},
错误:函数(){
警报(“未知错误!”);
}
});
});
}
我不得不说,当表单提交时,您的页面被切换掉了。因此,在表单成功提交后,您永远无法在其上执行任何javascript
但是,您可以覆盖表单的提交事件
如果用户提交表单:
- 阻止浏览器切换页面李>
- 请自行提交数据
- 触发你的成功方法
@节脚本{
$('form')。提交(函数(e){
e、 预防默认值();
$.ajax({
类型:$(this.attr('method'),
url:$(this.attr('action'),
数据:$(this).serialize(),
成功:功能(数据){
警惕(“这起作用了!”);
},
错误:函数(){
警报(“未知错误!”);
}
});
});
}
将表单转换为基于ajax的表单,用于处理onsuccess事件
@using (Ajax.BeginForm("Method", "Action", new AjaxOptions { OnSuccess ="onSuccess" }))
{
<button type="submit">RunMyMethod</button>
}
@使用(Ajax.BeginForm(“方法”、“操作”、新的AjaxOptions{OnSuccess=“OnSuccess”}))
{
RunMyMethod
}
和Javascript/Jquery
<script type="text/javascript">
function onSuccess(result) {
alert("Success")
}
</script>
函数onSuccess(结果){
警惕(“成功”)
}
将表单转换为基于ajax的表单,用于处理onsuccess事件
@using (Ajax.BeginForm("Method", "Action", new AjaxOptions { OnSuccess ="onSuccess" }))
{
<button type="submit">RunMyMethod</button>
}
@使用(Ajax.BeginForm(“方法”、“操作”、新的AjaxOptions{OnSuccess=“OnSuccess”}))
{
RunMyMethod
}
和Javascript/Jquery
<script type="text/javascript">
function onSuccess(result) {
alert("Success")
}
</script>
函数onSuccess(结果){
警惕(“成功”)
}
但是,您如何检测帖子何时完成?我假设您的页面会重新加载帖子。如果控制器中的代码同步运行(默认情况下),则在渲染视图之前完成post。因此,将RenderMyScript设置为true将发生在文章完成之后和视图显示之前。但是,您如何检测文章何时完成?我假设您的页面会重新加载文章。如果控制器中的代码同步运行(默认情况下),则在渲染视图之前完成post。因此,将RenderMyScript设置为true将在post完成之后和视图显示之前发生