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

能否在Ajax helper的UpdateTargetId中使用jQuery通配符选择器?

关于ASP.NET Ajax中UpdateTargetId使用jQuery通配符的问题

好问题!直接给结论:你不能直接在UpdateTargetId参数里使用jQuery通配符选择器,原因和可行的替代方案如下:

为什么直接用不行?

UpdateTargetId的设计初衷是接收纯HTML元素ID字符串,ASP.NET的Ajax辅助方法(比如Ajax.ActionLink、Ajax.BeginForm)内部会通过这个ID直接调用原生DOM方法查找元素(类似document.getElementById()),完全不会解析jQuery的选择器语法。

如果你写成UpdateTargetId ="$('[id$=divAllStudent]')",这个字符串会被当成一个字面量ID去查找,显然页面上不存在ID为$('[id$=divAllStudent]')的元素,所以AJAX返回的内容根本无法正确插入。

替代方案:用OnSuccess回调手动处理

既然原生的UpdateTargetId不支持,我们可以利用AjaxOptions里的OnSuccess回调函数,自己用jQuery选择器完成内容插入。具体步骤如下:

1. 修改Ajax.ActionLink配置

去掉UpdateTargetId参数,保留其他配置:

@Ajax.ActionLink("View All Student Info", "AllStudent", "Home", 
    new AjaxOptions { 
        OnBegin = "fnOnBegin", 
        InsertionMode = InsertionMode.Replace, 
        HttpMethod = "GET", 
        LoadingElementId = "imgloader", 
        OnSuccess= "fnSuccess", 
        Confirm="Do you want to get all student info ?????" 
    }, 
    new { @class = "btn btn-default" })

2. 编写OnSuccess回调函数

在页面的JavaScript中定义fnSuccess函数,用jQuery通配符选择器找到目标元素,再根据你需要的插入模式处理内容:

function fnSuccess(result) {
    // 用jQuery属性结尾选择器找到目标元素
    const targetElements = $('[id$=divAllStudent]');
    
    // 根据原来的InsertionMode处理内容
    switch ('Replace') {
        case 'Replace':
            targetElements.html(result);
            break;
        case 'Append':
            targetElements.append(result);
            break;
        case 'InsertBefore':
            targetElements.before(result);
            break;
        case 'InsertAfter':
            targetElements.after(result);
            break;
    }
}

如果只需要替换内容,也可以用简化版:

function fnSuccess(result) {
    $('[id$=divAllStudent]').html(result);
}

这样就能实现你想要的“用jQuery通配符选择器指定更新目标”的需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:11:26