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

在C# MVC框架中通过Ajax遍历控制器返回对象时遇到问题

解决C# MVC中AJAX遍历控制器返回对象的问题

嘿,我帮你排查下这个AJAX遍历的问题,看了你的代码,主要有两个关键地方需要调整:

1. 修正AJAX中$.each的回调参数

你当前的$.each写法参数顺序错了,jQuery的$.each回调函数第一个参数是索引值,第二个才是当前遍历的对象。你现在把参数写成function(items),相当于把索引当成了要遍历的项,自然拿不到displayName属性。

修正后的AJAX代码:

function getRName(obj) {
    $.ajax({
        url: 'resourceNamePopup',
        method: 'post',
        data: { "search": obj.value },
        dataType: 'json',
        success: function (data) {
            alert('success');
            // 调整参数顺序:第一个是索引,第二个是当前项
            $.each(data.items, function(index, item) {
                alert(item.displayName);
            });
        },
        // 建议加上错误处理,方便排查请求失败的情况
        error: function(xhr, status, error) {
            console.error('AJAX请求出错:', error);
        }
    });
}

2. 确保控制器返回的JSON结构匹配AJAX的预期

你的AJAX代码里在遍历data.items,这意味着控制器需要返回一个包含items属性的JSON对象,而不是直接返回List数组。

修正后的C# Action代码:

public ActionResult resourceNamePopup(string search) {
    List<ResourceName> rnList = new List<ResourceName>();
    // 这里填充你的rnList数据逻辑...
    
    // 将List包装成带有items属性的匿名对象
    var responseData = new { items = rnList };
    // 允许GET请求的话用JsonRequestBehavior.AllowGet,MVC5+也可以直接用Json()
    return Json(responseData, JsonRequestBehavior.AllowGet);
}

额外说明

如果你的需求是直接返回数组,那AJAX里就不需要取data.items,直接遍历data即可:

// 对应控制器直接返回Json(rnList, ...)的情况
$.each(data, function(index, item) {
    alert(item.displayName);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:06:01