ASP.NET Core 返回“名称‘Ajax’在当前上下文中不存在”

问题描述 投票:0回答:2

如果我在 ASP.NET 4.5 中启动一个新项目,选择管理 NuGet 包,搜索 Ajax,然后安装 Ajax Unobtrusive,然后我可以进入我的 .cshtml 文件并输入

@Ajax.___
,例如
@Ajax.beginForm

如果我使用 ASP.NET Core 创建一个新项目,则不能,反而会出现以下错误:

名称“Ajax”在当前上下文中不存在

我想用 Ajax 调用创建一个表单,就像在 ASP.NET 中所做的那样,例如:

@using (Ajax.BeginForm("EmployeeMaster", "Home", new AjaxOptions { 
    HttpMethod = "POST", UpdateTargetId = "divEmp" })) {
    ...
    }
}

在上面,我可以看到

Ajax
是一个
AjaxHelper
类型的对象,它来自 `System.Web.MVC.WebViewPage...所以也许它从来就不是适用于 .NET Core 的?

有人知道我还能尝试什么吗?

ajax asp.net-core unobtrusive-ajax
2个回答
18
投票

虽然

Ajax.BeginForm()
方法在 ASP.NET Core 中不起作用,但实际的不显眼的 Ajax HTML 却可以。 C# 方法仅帮助生成 HTML 表单标签。如果此语法错误,请原谅;这是凭记忆,但你明白了:

@using (Ajax.BeginForm("EmployeeMaster", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" }))
{
    //form content
}

成为

<form asp-action="EmployeeMaster" asp-controller="Home" method="POST" data-ajax="true" data-ajax-update="divEmp">
    <!-- form content-->
</form>

注意: 上面的 HTML 仍然需要不显眼的 Ajax JS 文件才能正确连接这些

data-*
属性。这不是 ASP.NET Core MVC 的一部分。


-1
投票

OnSuccess 的等价物是什么

@using (Ajax.BeginForm("EmployeeMaster", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp", OnSuccess="ShowMessage" }))
{
    //form content
}
© www.soinside.com 2019 - 2024. All rights reserved.