由于 Microsoft.jQuery.Unobtrusive.Ajax 已弃用,如何在 .Net Core 6.0 应用程序中替换 Ajax.BeginForm 帮助程序

gla*_*nut 3 c# asp.net-mvc razor-pages asp.net-core-6.0

在以前的 ASP.NET MVC 项目中,我大量使用了Ajax.BeginForm()Razor 页面中的帮助程序来创建可更新页面内内容并仅更新页面的一部分的表单。现在我正在 ASP.NET Core 6.0 中创建一个项目,我不知道 Microsoft 希望我如何实现同样的目标。

到目前为止,我所有的谷歌搜索都会出现几年前的帖子,并将我指向 nuget 包Microsoft.jQuery.Unobtrusive.Ajax,但它自 2018 年以来一直没有更新,目前被标记为已弃用。我没有找到任何允许在表单发布后部分更新页面的标签助手。如果这是唯一剩下的路线,我不反对添加自定义 jQuery,但我也没有找到很好的例子。

Ren*_*ena 6

在 ASP.NET 6 中,它是常见的使用 jquery.unobtrusive-ajax.js并定义如下形式:

<div id="result">
<form asp-action="ActionName" asp-controller="ControllerName" method="POST" data-ajax="true" data-ajax-update="result">
    <!-- form content-->
</form>
@section scripts{
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajax-unobtrusive/3.2.6/jquery.unobtrusive-ajax.js" integrity="sha256-v2nySZafnswY87um3ymbg7p9f766IQspC5oqaqZVX2c=" crossorigin="anonymous"></script>   
}
Run Code Online (Sandbox Code Playgroud)

更多支持的data-*属性jquery.unobtrusive-ajax.js可以参考这里

属性 描述
数据ajax 必须设置为true才能在目标元素上激活不显眼的 Ajax。
数据 ajax 确认 获取或设置在提交请求之前要在确认窗口中显示的消息。
数据 ajax 方法 获取或设置 HTTP 请求方法(“Get”或“Post”)。
数据ajax模式 获取或设置指定如何将响应插入目标 DOM 元素的模式。有效值为beforeafterreplace。默认为replace
数据 ajax 加载持续时间 获取或设置一个值(以毫秒为单位),该值控制显示或隐藏加载元素时动画的持续时间。
数据ajax加载 获取或设置加载 Ajax 函数时显示的 HTML 元素的 id 属性。
数据 ajax 开始 获取或设置在页面更新之前立即调用的 JavaScript 函数的名称。
数据 ajax 完整 获取或设置响应时调用的 JavaScript 函数
数据 ajax 失败 获取或设置页面更新失败时要调用的 JavaScript 函数。
数据 ajax 成功 获取或设置页面成功更新后要调用的 JavaScript 函数。
数据 ajax 更新 获取或设置要使用服务器响应更新的 DOM 元素的 ID。
数据 ajax url 获取或设置要向其发出请求的 URL

一个简单的demo你可以参考这个答案

另一种类似的方法是Ajax.BeginForm()使用包AspNetCore.Unobtrusive.Ajax,你可以在这里查看 github 存储库: https: //github.com/mjebrahimi/AspNetCore.Unobtrusive.Ajax