【问题标题】:ASP.NET Core and JQuery unobtrusive AJAX not workingASP.NET Core 和 JQuery 不显眼的 AJAX 不起作用
【发布时间】:2017-11-23 19:03:48
【问题描述】:

如果我在 .net 4.5 中开始一个新项目并点击管理 nuget 包,搜索 ajax,然后点击安装,让 ajax 不显眼。然后我可以进入我的 cshtml 文件并输入 @Ajax.___ 例如@Ajax.beginForm

如果我使用 Dot Net Core 创建一个新项目......我不能,而是它给了我一个无用的错误:

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

我在网上搜索过,一无所获...

基本上我想用 Ajax 调用创建一个表单,就像在 .net 中所做的那样

如:

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

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

在上面,我可以看到 Ajax 是一个来自 System.web.mvc.webviewpage 的 AjaxHelper 类型的对象......所以它可能永远不会适用于 .net 核心

【问题讨论】:

  • json.package 中是否有 Ajax 库?
  • 没有 json.package,但是有一个 bower.json 及其包含的依赖项
  • 我不确定这一点,但我只是写这个,因为你还没有真正得到任何其他回复。 dot net core 需要有 ajax 库,与 MVC 不同,默认情况下不会接受 ajax。尝试将其添加到 bower 本身或仅安装 nuget 包

标签: asp.net ajax asp.net-core unobtrusive-ajax


【解决方案1】:

虽然Ajax.BeginForm() 方法不起作用,但实际不显眼的 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 的一部分

【讨论】:

    【解决方案2】:

    OnSuccess 的等价物是什么

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

    【讨论】:

    • 没关系,这成功了
    猜你喜欢
    • 1970-01-01
    • 2015-05-13
    • 2013-08-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2021-02-09
    相关资源
    最近更新 更多