如果我在 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.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 的一部分。
OnSuccess 的等价物是什么
@using (Ajax.BeginForm("EmployeeMaster", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp", OnSuccess="ShowMessage" }))
{
//form content
}