访问从C#返回的多个JSON对象

时间:2015-07-02 10:45:35

标签: c# asp.net angularjs

页面上有2个下拉列表,每个下拉列表都与来自DB的数据绑定。 我计划在一次旅行中从服务器端返回所需的2个JSON对象。这是为了不再次访问数据库。

如何访问/使用这些返回的对象是我的问题。这可能吗?

ASPX:

<select id="ddlSet">
 <option ng-repeat="item in Sets" value="{{item}}">{{item}}</option>
</select>
<select id="ddlCircle">
 <option ng-repeat="item in Circles" value="{{item}}">{{item}}</option>
</select>

C#:

[WebMethod]
public void GetReportFilters()
 {
   List<Set> lstSets = null;
   List<Circle> lstCircles = null;
   ReportsDB.GetFiltersData(out lstSets, out lstCircles);

   ReportFilters obj = new ReportFilters();
   obj.lstSets = lstSets;
   obj.lstCircles = lstCircles;
   JavaScriptSerializer serializer = new JavaScriptSerializer();
   Context.Response.Clear();
   Context.Response.ContentType = "application/json";
   HttpContext.Current.Response.Write(
          (serializer.Serialize(serializer.Serialize(obj))));

 }

如果是单个JSON对象,我会这样做:

JS:

$scope.Sets=[];
$scope.Circles=[];
var promise = ReportsFactory.GetReportFilters();
        promise.then(function (success) {
            if (success.data != null && success.data != '') {
                $scope.Sets = JSON.parse(success.data);
            }
            else {
                console.log(success.data);
            }
        },
        function (error) {
            console.log(error);
        })

1 个答案:

答案 0 :(得分:2)

实际上它是一个JSON对象,包含2个其他对象

if (success.data != null && success.data != '') {
    var data = JSON.parse(success.data);
    $scope.Sets = data.lstSets;
    $scope.Circles = data.lstCircles;
}

编辑:我认为如果您可以在C#端切割1个序列化,则可以在没有JSON.parse的情况下访问javascript上的对象。