在ASP.NET MVC中使用屏蔽图绑定到web服务数据
Using Shield Chart in ASP.NET MVC to bind to web service data
对于我正在处理的一个新项目,我正在考虑使用用于ASP.NET MVC的Shield Chart来显示一些用户统计信息。我已经使用Html.ShieldChart()
包装器方法成功地从剃刀视图中呈现了一个屏蔽javascript图表。图表的实际数据来自JSON格式的本地rest服务。问题是,我无法让图表显示JSON数据。Shield UI演示展示了一种将MVC图表绑定到远程web服务的方法,但我的场景完全不同。
在我们的门户网站中,我们在url /api/users/12652/stats
下实现了一个REST服务,该服务将为具有给定ID的用户返回一些JSON统计信息。responsone包含sessions
属性,该属性列出了用户当月的会话:
{
sessions: [{ start: 1379624400000, end: 1377023690271 }, { ... }]
}
开始时间和结束时间之间的差异给出了会话的持续时间。我需要显示一个条形图,它将在Y轴上的一行中显示所有会话的持续时间,而X轴将包含所有会话日期(从开始值开始)。
这样的东西应该会让你开始:
<div id="chart"></div>
<script type="text/javascript">
$(function () {
$.get("/api/users/12652/stats", function (data) {
var sessions = sessions;
@(Html.ShieldChart()
.Name("chart")
.PrimaryHeader(header => header.Text("User session duration (in minutes)"))
.DataSeries(series => series.Bar()
.Data(@<text>
(function () {
return $.map(sessions, function (item) {
//return the difference between the end and start time in minutes
return (item.end - item.start) / 1000 / 60;
});
})()
</text>))
.GetScript())
});
});
</script>
请注意,如何在服务请求的javascript回调中使用Razor服务器表达式来定义Shield Chart。我们这样做是因为我们需要session
变量来包含从服务返回的实际数据。然后,我们可以使用<text></text>
模板中的自调用函数作为MVC中系列.Data()
方法的参数。这具有在javascript初始化选项中呈现自调用函数表达式的效果,帮助我们将服务响应映射到系列数据选项。
请注意最后一次.GetScript()
方法调用。我们使用它只呈现图表小部件的初始化脚本,而不是整个小部件标记和脚本。这允许在HTML页面中用javascript代码初始化小部件。
但是,对于将X轴分类值绑定到服务响应,您没有类似的方法可以使用@<text></text>
模板。对于这种情况,最好使用纯javascript初始化:
$(function() {
$("#chart").shieldChart({
primaryHeader: {
text: "User session duration (in minutes)"
},
dataSeries: [{
seriesType: 'bar',
data: $.map(sessions, function(item) {
return (item.end - item.start) / 1000 / 60;
})
}],
axisX: {
axisType: "datetime",
dataStart: sessions[0].start,
categoricalValues: $.map(sessions, function(item) {
return new Date(item.start);
})
}
});
});
这里是上面场景的JSBin,其中包含一些硬编码数据,只是为了集中精力进行图表初始化。
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何将WinJS ListView绑定到web服务
- 将web服务回调的结果绑定到Javascript中的调用函数
- 在Web应用程序中绑定API和模板路由的位置
- 使用 Web API 编辑获取数据时,无法将数据绑定到 jqgrid 中的下拉列表
- 模拟 Web 浏览器方向更改事件以使用 Jasmine 测试绑定事件处理程序函数
- Web 文本编辑器 - 将单选按钮绑定到 javascript 函数
- 在ASP.NET MVC中使用屏蔽图绑定到web服务数据
- 如何防止用户修改绑定到html控件的javascript变量的值(使用任何web浏览器的调试器选项)
- 创建与JavaScript绑定的用户web控件
- 我可以在web项目上使用binding.js进行数据绑定吗
- 如何使用interval将angular作用域绑定到web worker的结果
- 如何绑定ZeroMQ套接字与棘轮web套接字库,使实时应用程序的php应用
- 具有基于视图的数据绑定上下文的模块化 Web 组件
- 将剑道下拉列表绑定到RESTFUL web服务
- 如何从不支持HTML5的旧浏览器绑定到web sockets服务器