页面上有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);
})
答案 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上的对象。