ASP.Net Core中使用jquery-ajax-unobtrusive替换Ajax.BeginForm
Posted 青城同学的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.Net Core中使用jquery-ajax-unobtrusive替换Ajax.BeginForm相关的知识,希望对你有一定的参考价值。
在大潮流下,大家都在研究MVVM框架,但是做面向搜索引擎的外网项目还是得用服务器渲染。
在.Net中肯定就是用Razor模板引擎了。
.Net Core断臂式重构后,很多在老得Mvc中使用得好好的一些功能,突然就不见了。
在这里鄙视一下微软,说好的无缝切换呢。。我看这个缝还是有点大。
ASP.Net Core中,使用TagHelper替换htmlHelper。使得写出的Razor代码可读性更高,同时VS的提示能力更强了。
但是也丢掉了很多以前觉得很好用的东西,比如今天要说的Ajax.BeginForm,在ASP.Net Core中突然就不见了,搜索GitHub的Issue,发现官方不打算支持Ajax.BeginForm了。后续也无开发计划,那个issue直接被关闭了。
虽然没了Ajax.BeginForm。但是在墙外搜索到另一种TagHelper的实现。
直接在form上使用data-*去做异步表单,使用方式和Ajax.BeginForm半斤八两
https://github.com/aspnet/jquery-ajax-unobtrusive
去GitHub下载这个项目,然后点击build.cmd,脚本自动构建一个dilst,里面就是js文件
然后引用到项目中。就可以愉快的编写异步表单辣
<form asp-controller="Home" asp-action="Test" data-ajax="true" data-ajax-method="post" data-ajax-begin="begin" data-ajax-success="success"> <label asp-for="UserName"></label>: <input asp-for="UserName" /> <span asp-validation-for="UserName"></span> <br /> <label asp-for="PassWord"></label>: <input asp-for="PassWord" /> <span asp-validation-for="PassWord"></span> <button type="submit">Ok</button> </form
<script>
var begin = function () {
console.log("begin");
}
var success = function (context) {
console.log(context)
}
</script>
这里提供了N多个data-ajax-*的taghelper,
AjaxOptions | HTML attribute |
---|---|
Confirm | data-ajax-confirm |
HttpMethod | data-ajax-method |
InsertionMode | data-ajax-mode |
LoadingElementDuration | data-ajax-loading-duration |
LoadingElementId | data-ajax-loading |
OnBegin | data-ajax-begin |
OnComplete | data-ajax-complete |
OnFailure | data-ajax-failure |
OnSuccess | data-ajax-success |
UpdateTargetId | data-ajax-update |
Url | data-ajax-url |
好了,就酱紫了
以上是关于ASP.Net Core中使用jquery-ajax-unobtrusive替换Ajax.BeginForm的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存
ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程
在 ASP.NET Core 6.0 中使用 Serilog
ASP.NET Core 1.0 中使用 Swagger 生成文档
ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)