英文:
How to replace Ajax.BeginForm helper in .Net Core 6.0 application since Microsoft.jQuery.Unobtrusive.Ajax is deprecated
问题
在以前的ASP.NET MVC项目中,我经常在Razor页面中大量使用Ajax.BeginForm()
助手来创建在页面内更新内容并仅更新页面的一部分的表单。现在我正在创建一个ASP.NET Core 6.0项目,我不知道微软希望我如何实现相同的功能。
到目前为止,我所有的谷歌搜索都只找到了几年前的帖子,它们将我指向了NuGet包Microsoft.jQuery.Unobtrusive.Ajax
,但该包自2018年以来没有更新,目前标记为已弃用。我没有找到任何标签助手允许在表单提交后部分更新页面。如果这是唯一剩下的方法,我并不反对添加自定义jQuery,但目前我还没有找到好的示例。
英文:
In previous ASP.NET MVC projects, I've made much use of the Ajax.BeginForm()
helper in Razor pages to create forms that update content within a page and update only a portion of the page. Now I am creating a project in ASP.NET Core 6.0 and I don't know how Microsoft would like me to achieve the same thing.
All my google searches so far turn up posts that are a few years old and point me to the nuget package Microsoft.jQuery.Unobtrusive.Ajax
, but that hasn't been updated since 2018 and is currently marked as deprecated. I'm not finding any tag helpers that allow partial updating of a page after a form post. I'm not opposed to adding custom jQuery if that's the only remaining route, but I'm not finding good examples of that yet, either.
答案1
得分: 3
在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>
</div>
@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>
}
更多支持的data-*
属性可参考此处。
属性 | 描述 |
---|---|
data-ajax | 必须设置为true 以在目标元素上激活不显眼的Ajax。 |
data-ajax-confirm | 在提交请求之前显示在确认窗口中的消息。 |
data-ajax-method | 获取或设置HTTP请求方法("Get"或"Post")。 |
data-ajax-mode | 获取或设置指定如何将响应插入到目标DOM元素的模式。有效值为before ,after 和replace 。默认为replace 。 |
data-ajax-loading-duration | 以毫秒为单位控制显示或隐藏加载元素的动画持续时间。 |
data-ajax-loading | 获取或设置在Ajax函数加载时显示的HTML元素的id属性。 |
data-ajax-begin | 获取或设置在页面更新之前立即调用的JavaScript函数的名称。 |
data-ajax-complete | 获取或设置在实例化响应后但在页面更新之前调用的JavaScript函数。 |
data-ajax-failure | 获取或设置如果页面更新失败时要调用的JavaScript函数。 |
data-ajax-success | 获取或设置在页面成功更新后要调用的JavaScript函数。 |
data-ajax-update | 获取或设置使用来自服务器的响应来更新的DOM元素的ID。 |
data-ajax-url | 获取或设置要发出请求的URL。 |
您可以参考此答案查看一个简单的演示。
另一种类似于Ajax.BeginForm()
的方法是使用AspNetCore.Unobtrusive.Ajax
包,您可以在GitHub存储库这里查看。
英文:
In ASP.NET 6, it is common use jquery.unobtrusive-ajax.js
and define the form somthing like below:
<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>
}
More supported data-*
attributes for jquery.unobtrusive-ajax.js
you can refer to here.
Attribute | Description |
---|---|
data-ajax | Must be set to true to activate unobtrusive Ajax on the target element. |
data-ajax-confirm | Gets or sets the message to display in a confirmation window before a request is submitted. |
data-ajax-method | Gets or sets the HTTP request method ("Get" or "Post"). |
data-ajax-mode | Gets or sets the mode that specifies how to insert the response into the target DOM element. Valid values are before , after and replace . Default is replace |
data-ajax-loading-duration | Gets or sets a value, in milliseconds, that controls the duration of the animation when showing or hiding the loading element. |
data-ajax-loading | Gets or sets the id attribute of an HTML element that is displayed while the Ajax function is loading. |
data-ajax-begin | Gets or sets the name of the JavaScript function to call immediately before the page is updated. |
data-ajax-complete | Gets or sets the JavaScript function to call when response |
data-ajax-failure | Gets or sets the JavaScript function to call if the page update fails. |
data-ajax-success | Gets or sets the JavaScript function to call after the page is successfully updated. |
data-ajax-update | Gets or sets the ID of the DOM element to update by using the response from the server. |
data-ajax-url | Gets or sets the URL to make the request to |
A simple demo you could refer to this answer.
Another way which is similiar to Ajax.BeginForm()
is using the package AspNetCore.Unobtrusive.Ajax
, you can check the github repo here:https://github.com/mjebrahimi/AspNetCore.Unobtrusive.Ajax
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论