核心MVC-不存在Ajax兼容

时间:2019-05-21 09:52:09

标签: asp.net-core-mvc asp.net-ajax nuget-package

在我的Core MVC 2.2项目中,我通过Nuget软件包添加了jQuery Unobtrusive Ajax(v:3.2.6)。我首先注意到,在wwwroot / lib中没有为其添加本地文件夹,也可以尝试以下简单方法:

@using (Ajax.BeginForm( ... 

我收到错误消息:CS0103当前上下文中不存在名称'Ajax'

请告知如何解决此问题。

2 个答案:

答案 0 :(得分:1)

您可以从npm(从Visual Studio的Package Manager控制台中{npm i jquery-ajax-unobtrusive)获得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

要在npm上安装jquery-ajax-unobtrusive,因为尚未在cdnjs上安装,我们可以使用unpkg提供程序并使用默认位置:

libman install -p unpkg jquery-ajax-unobtrusive

另一点是.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>

对于MVC,您可以单击here以获得代码示例。 here是Razor Pages版本的代码示例。

答案 1 :(得分:1)

在Windows中通过NuGet软件包管理器安装软件包会将其安装到计算机上的.nuget位置。对于非干扰性的ajax,应该类似于%userprofile%.nuget \ packages \ microsoft.jquery.unobtrusive.ajax

然后可以按照Nan Yu的答案中的说明将此文件夹复制到wwwroot \ lib。