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

如何在C#中合并多个JsonResult并在AngularJS中按名称获取

我来帮你搞定这个问题!其实核心思路是不要直接合并多个JsonResult实例,而是先把你要返回的多个数据集打包成一个带命名属性的对象,再统一序列化成JSON返回。这样AngularJS那边就能轻松通过属性名获取对应列表了。


C#端:构造带命名列表的组合对象返回

你需要先把各个数据源(比如不同的列表)整合到一个匿名对象或强类型对象中,再返回这个对象的JsonResult,而不是尝试拼接多个JsonResult的输出(那样会生成无效的JSON)。

示例代码

public class DataController : Controller
{
    public JsonResult GetCombinedLists()
    {
        // 模拟获取不同的数据集
        var customerList = new List<Customer>
        {
            new Customer { Id = 1, Name = "John Doe", Email = "john@example.com" },
            new Customer { Id = 2, Name = "Jane Smith", Email = "jane@example.com" }
        };

        var orderList = new List<Order>
        {
            new Order { OrderId = 1001, CustomerId = 1, Total = 99.99 },
            new Order { OrderId = 1002, CustomerId = 2, Total = 149.99 }
        };

        // 打包成带命名属性的组合对象
        var combinedData = new
        {
            Customers = customerList,
            Orders = orderList
            // 可以继续添加更多命名列表,比如Products、Categories等
        };

        // 返回组合对象的JsonResult(.NET Core可省略JsonRequestBehavior.AllowGet)
        return Json(combinedData, JsonRequestBehavior.AllowGet);
    }
}

// 对应的实体类(根据你的业务定义)
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
}

public class Order
{
    public int OrderId { get; set; }
    public int CustomerId { get; set; }
    public double Total { get; set; }
}

AngularJS端:通过名称获取对应列表

在AngularJS里,你只需要通过$http调用C#的接口,拿到响应后直接通过属性名访问对应的列表即可。

示例代码

// 定义AngularJS模块和控制器
var app = angular.module('MyApp', []);

app.controller('DataController', ['$scope', '$http', function($scope, $http) {
    // 调用C#接口获取组合数据
    $http.get('/Data/GetCombinedLists')
        .then(function(response) {
            // 通过属性名获取不同列表
            $scope.customers = response.data.Customers;
            $scope.orders = response.data.Orders;
            
            // 现在可以在视图中直接使用这些变量,比如:
            // <div ng-repeat="customer in customers">{{customer.Name}}</div>
        })
        .catch(function(error) {
            console.error('加载数据失败:', error);
        });
}]);

关键注意点

  1. 不要拼接JsonResult:每个JsonResult都会生成独立的JSON结构,直接拼接会导致语法错误,必须先整合数据再序列化。
  2. 属性名要一致:C#组合对象的属性名(比如Customers)要和AngularJS中访问的名称完全匹配(大小写敏感)。
  3. .NET Core适配:如果是.NET Core项目,返回JsonResult时不需要JsonRequestBehavior.AllowGet,直接写return Json(combinedData);即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:53:29