核心 MVC - Ajax 不显眼不存在

The*_*ixy 2 asp.net-ajax nuget-package asp.net-core-mvc

在我的 Core MVC 2.2 项目中,我通过 Nuget 包添加了 jQuery Unobtrusive Ajax (v: 3.2.6)。我注意到的第一件事是 wwwroot/lib 中没有为其添加本地文件夹,如果尝试一些简单的操作,例如:

@using (Ajax.BeginForm( ... 
Run Code Online (Sandbox Code Playgroud)

我收到错误:CS0103 当前上下文中不存在名称“Ajax”

请告知如何解决此问题。

Nan*_* Yu 6

您可以从 npm(npm i jquery-ajax-unobtrusive从 Visual Studio 中的包管理器控制台)获取 Unobtrusive AJAX,也可以使用 Visual Studio 提供的多种方法之一从 Nuget 安装它。获得它后,您可以为其创建一个新文件夹wwwroot\lib并将文件复制到其中,然后在_layout页面中链接该文件。

您还可以使用 LibMan,它将管理您的客户端库并自动将库安装到目标位置,默认情况下wwwroot\lib\YourLibrary,您可以使用 GUI 或使用 LibMan cli。安装 Libman cli:

dotnet tool install --global Microsoft.Web.LibraryManager.Cli
Run Code Online (Sandbox Code Playgroud)

要jquery-ajax-unobtrusive在 npm 上安装,因为它还没有打开cdnjs,我们可以使用unpkg提供程序并使用默认位置:

libman install -p unpkg jquery-ajax-unobtrusive
Run Code Online (Sandbox Code Playgroud)

另一点是.Net Core@using (Ajax.BeginForm( ... 不支持标记。相反,ASP.NET Core 团队推荐data-*使用属性。所有现有@Ajax.Form属性都可用作data-*属性:

<form asp-controller="Home" asp-action="SaveForm" data-ajax="true" data-ajax-method="POST">
</form>
Run Code Online (Sandbox Code Playgroud)

对于 MVC,您可以单击此处获取代码示例。这是Razor Pages 版本的代码示例。