我有一个非常奇怪的问题。我正在使用MVC 3在C#中开发功能。单击选项卡时,控制器将返回部分视图,并且该视图将调用绘制图形的javascript文件。在第一个调用中,系统运行良好,JS文件正常运行。但是,如果我再次单击选项卡(或转到另一个选项卡并返回),则将不再执行JS文件。调试代码后,我看到实际上是视图已执行,并且调用JS方法的行也是如此,但莫名其妙地,控件从未传递给JS文件。最奇怪的是,Chrome控制台不会返回任何错误。
我的视图(aspx)中包含以下代码:
<div class="widget-content">
<div id="containerWidgetTension" style="height: 300px; min-width: 310px; text-align: center; font-weight: bolder"></div>
<%
UrlAccion = Url.Action("GetSerieGraficoTension", "Terminales");
%>
<script src="content/JS/Graficos/graficotension.js" type="text/javascript"></script>
<script type="text/javascript">
function WidgetTension() {
var param = {
accion: '<%= UrlAccion %>',
container: 'containerWidgetTension',
terminal: '<%= vd.Terminal.NumeroDeSerie %>',
fechaDesde: '<%= fechaHasta %>',
fechaHasta: '<%= fechaHasta %>',
valorConstante: '<%=ViewBag.ValorConstanteTension%>',
TT: '<%= vd.Terminal.TT %>'
}
MostrarGraficoTension(param);
};
$(function () {
WidgetTension();
});
</script>
</div>
Javascript函数位于单独的文件graficotension.js中:
function MostrarGraficoTension(param) {
accion = param.accion;
terminal = param.terminal;
fechaDesde = param.fechaDesde;
fechaHasta = param.fechaHasta;
monofasico = param.monofasico;
mostrarUmbrales = param.mostrarUmbrales;
umbralTensionMaxima = param.umbralTensionMaxima;
umbralTensionMinima = param.umbralTensionMinima;
valorConstante = param.valorConstante;
TT = param.TT;
var container = param.container;
function createChart(data) {
Highcharts.setOptions(options); //el objeto "options" se levanta del script "configuracion.js"
chart = new Highcharts.StockChart({
chart: {
renderTo: container,
type: 'spline'
},
colors: ['#3131F8', '#FB1C1C', '#008000', '#f7a35c', '#8085e9',
'#f15c80', '#e4d354', '#8085e8', '#8d4653', '#91e8e1'],
yAxis: {
opposite: false,
showLastLabel: true,
labels: {
//format: "{value} V",
formatter: function () {
return (TT == 100) ? this.value + " V" : (this.value / 1000).toFixed(0) + " kV";
},
align: "right"
},
title: {
text: 'Tensión'
}
},
plotOptions: {
series: {
events: {
show: function () {
var id = (this.name == 'Tensión') ? '#tablaL1' : "#tabla" + this.name;
//$(id).show();
$(id).css('visibility', 'visible');
},
hide: function () {
var id = (this.name == 'Tensión') ? '#tablaL1' : "#tabla" + this.name;
//$(id).hide();
$(id).css('visibility', 'hidden');
}
}
}
},
tooltip: {
pointFormatter: function () {
var n = this.series.name;
if (n == "L1" || n == "L2" || n == "L3" || n == "Tensión") {
var s = '<span style="color:' + this.series.color + '">' + this.series.name + '</span>: <b>';
if (TT == 100)
return s + Highcharts.numberFormat((this.y), 1, '.') + ' V</b><br/>';
else
return s + Highcharts.numberFormat((this.y / 1000), 2, '.') + ' kV</b><br/>';
}
else {
var symbol = '';
switch (this.series.symbol) {
case 'circle':
symbol = '● ';
break;
case 'diamond':
symbol = '♦ ';
break;
case 'square':
symbol = '■ ';
break;
case 'triangle':
symbol = '▲ ';
break;
case 'triangle-down':
symbol = '▼ ';
break;
}
return '<span style="color:' + this.series.color + '">' + symbol + this.series.name + '</span><br/>';
}
}
},
legend: {
enabled: true
},
series: data
});
umbrales($('#chkUmbrales').is(":checked"));
actualizarMinMax();
}
$('#' + container).css('cursor', 'default');
$('#' + container).text("Cargando..");
var url = accion;
var parametros = "?Terminal=" + terminal + "&FechaDesde=" + fechaDesde + "&FechaHasta=" + fechaHasta;
url = url + parametros;
$.getJSON(url, function (data) {
createChart(data);
}).fail(function(jqXHR, status, error){
$('#' + container).css('cursor', 'default');
$('#' + container).text("Error cargando la serie.");
var errorStr = "Error - " + status + " - " + error;
console.log(errorStr);
console.log(jqXHR.responseText);
});
};