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

MVC中如何通过Ajax成功回调将两个不同列表从控制器传至视图

当然可以实现!

你只需要把两个不同的列表包装在一个统一的对象(匿名对象或自定义ViewModel)中,从控制器返回Json结果,然后在Ajax的success回调里分别访问这两个列表即可。下面是具体的实现步骤:

1. 修改控制器代码,包装两个列表

在你的GetDoctorwiseReport方法中,把两个集合放到一个匿名对象里,然后返回JsonResult:

public JsonResult GetDoctorwiseReport(DateTime fromDate, DateTime toDate)
{
    // 获取第一个列表:医生数据
    IEnumerable<DoctorVM> Doctors = homeObj.GetDistinctDoctorsFromTransactionMaster(fromDate, toDate);
    // 获取第二个列表:替换成你实际需要的第二个集合
    IEnumerable<YourSecondViewModel> SecondDataList = homeObj.GetYourSecondListData(fromDate, toDate);
    
    // 包装成包含两个属性的统一对象
    var responseData = new {
        DoctorList = Doctors,
        SecondDataList = SecondDataList
    };
    
    // 返回Json结果,允许GET请求(你的Ajax用POST,也可以省略第二个参数)
    return Json(responseData, JsonRequestBehavior.AllowGet);
}

2. 修改Ajax的success回调,提取并处理两个列表

在前端的Ajax回调中,通过对象属性分别获取两个列表,再进行后续的页面渲染或数据处理:

$.ajax({ 
    url: "@Url.Action("GetDoctorWiseReport","DCDReport")", 
    data: { fromDate: fromDate, toDate: toDate }, 
    type: "post", 
    datatype: "json", 
    success: function (data) { 
        // 提取医生列表
        var doctorList = data.DoctorList;
        // 提取第二个数据列表
        var secondList = data.SecondDataList;
        
        // 示例:渲染医生列表到页面
        if (doctorList.length > 0) {
            $.each(doctorList, function(index, doctor) {
                // 根据你的DoctorVM属性调整,比如doctor.Name、doctor.Id等
                $("#doctor-list").append(`<li>${doctor.Name}</li>`);
            });
        }
        
        // 示例:处理第二个列表
        if (secondList.length > 0) {
            $.each(secondList, function(index, item) {
                $("#second-data-container").append(`<div class="data-item">${item.TargetProperty}</div>`);
            });
        }
    },
    // 建议添加错误处理,方便排查问题
    error: function(xhr, status, error) {
        console.error("请求出错: ", error);
    }
});

关键注意事项

  • 确保你的视图模型(DoctorVM、YourSecondViewModel)的所有属性都是可Json序列化的,避免循环引用或不可序列化的类型
  • 控制器返回的匿名对象属性名,要和前端回调中访问的属性名完全一致(大小写敏感)
  • 如果集合可能为空,建议在回调中先判断长度,避免遍历空集合出现报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:20:59