You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET 6 MVC中如何获取或创建AjaxHelper使用AjaxExtensions.ActionLink

首先纠正一个引用错误:你代码里引入的System.Web.Mvc.Ajax是.NET Framework 平台下传统ASP.NET MVC 5及更早版本的命名空间,在ASP.NET 6(ASP.NET Core 6)MVC项目中不能直接使用,需要先做适配准备。

  • 安装依赖包:在NuGet包管理器中安装Microsoft.jQuery.Unobtrusive.Ajax包,为项目提供ASP.NET Core 兼容的Ajax扩展能力。
  • 修正命名空间引用:删除原来的@using System.Web.Mvc.Ajax;,替换为@using Microsoft.AspNetCore.Mvc.Ajax;,可以直接写在当前视图,也可以写到全局_ViewImports.cshtml文件中对所有视图生效。
  • 引入必要脚本:在当前视图或者共用布局页中引入jQuery和unobtrusive ajax脚本,否则生成的Ajax链接无法正常发起异步请求:
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.min.js"></script>
  • AjaxHelper实例不需要手动创建:Razor视图引擎在渲染视图时已经默认初始化了Ajax属性,这个属性就是AjaxExtensions.ActionLink方法第一个参数需要的AjaxHelper类型实例,你代码里???的位置直接传入Ajax即可。

修正后的完整代码如下:

@model List<Shift>
@using Microsoft.AspNetCore.Mvc.Ajax

@{
    AjaxOptions deleteOptions = new AjaxOptions()
            {
                InsertionMode = InsertionMode.Replace,
                UpdateTargetId = "table"
            };
}

@foreach (Shift shift in Model)
{
    <td>
        @AjaxExtensions.ActionLink(Ajax, "Delete", "DeleteShift", "MainDoctor", new {id=shift.Id}, deleteOptions)
    </td>
}

简化写法提示:ActionLink是基于AjaxHelper的扩展方法,你不需要显式调用静态类AjaxExtensions,直接用扩展方法语法写@Ajax.ActionLink("Delete", "DeleteShift", "MainDoctor", new {id=shift.Id}, deleteOptions)效果完全一致,代码更简洁。

内容的提问来源于stack exchange,提问作者Denis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:39:36