我们有一个 Web 项目,它从 MS SQL 数据库中获取数据,并使用 Google Visualization API 在 Web 视图上显示这些图表。
最近我们添加了城堡温莎,因此我们可以使用 XML 文件将应用程序配置给不同的用户。在我们添加它之前,视图运行良好,使用了该查询所需的内置参数。出于某种原因,当我们从 XML 文件中发送参数时(使用断点运行显示参数正在传递给页面的主控制器操作),没有返回数据。这是给你的一些代码。
JavaScript
<script type="text/javascript">
var csvDataUrl = '@Url.Action("TradeValuesDataCsv", "Dashboard")';
var jsonDataUrl = '@Url.Action("TradeValuesDataJson", "Dashboard")';
google.load("visualization", "1", { packages: ['table', 'corechart', 'gauge'] });
google.setOnLoadCallback(drawCharts);
drawCharts();
$("body").on({
ajaxStart: function () {
$(this).addClass("loading");
},
ajaxStop: function () {
$(this).removeClass("loading");
}
});
function drawCharts() {
var queryString = 'platform=' + $('#PlatformDropDownList').val();
queryString += '&startDate=' + $('#startDatePicker').val();
queryString += '&endDate=' + $('#endDatePicker').val();
queryString += '&model=' + $('#ModelDropDownList').val();
queryString += '&eventType=' + '@Model.EventType';
queryString += '¶meterName=' + '@Model.ParameterName';
$.ajax({
type: "POST",
url: jsonDataUrl,
data: queryString,
statusCode: {
200: function (r) {
drawToolbar(queryString);
drawTable(r);
drawChart(r);
},
400: function (r) {
},
500: function (r) {
}
}
});
}
此页面的主控制器方法:
public ActionResult ActionResultName(EventTypeParameterNameEditModel model)
{
var viewModel = new EventTypeParameterNameViewModel(_queryMenuSpecific);
viewModel.EventType = model.EventType;
viewModel.ParameterName = model.ParameterName;
PopulateFilters(viewModel);
return this.View(viewModel);
}
检索 JSON 数据控制器方法:
public ActionResult ActionResultNameJson(EventTypeParameterNameEditModel filters)
{
List<CustomDataType> results = this.GetTradeValues(filters);
return this.Json(results, JsonRequestBehavior.AllowGet);
}
编辑我设法找到了一个解决方案,即使它是一个相当混乱的解决方案。我在页面中内置了一些过滤器,允许用户按设备和操作系统进行过滤,这些过滤器在页面加载时填充了“未定义”。我在第一次使用 NProf Running 时没有发现这种情况,但是在我们将输入配置为来自 XML 之前加载页面时并没有发生这种情况。我会将其添加为答案并接受并关闭问题。感谢大家尝试提供帮助。开始真正喜欢这个社区。作为研究生开发人员寻求帮助的理想场所。