我正在尝试获取控制器方法的进度。我已经使用setInterval
方法来调用控制器内的progress方法,但是setInterval
内的ajax调用仅在执行控制器方法后才命中控制器,直到那时ajax请求状态保持{{1 }}上。
我考虑过将第一种方法异步化
Java脚本代码
pending
controller.cs
function Import() {
$('.loader').show();
var checked;
if ($('#chkNewCycle').is(":checked")) {
checked = 'on';
}
else {
checked = 'off';
}
var NewCycle = { IsNewCycle: checked };
$.ajax({
url: '/DataImport/Import',
type: 'POST',
data: NewCycle,
success: function (result) {
$('.loader').hide();
if (result == "success") {
window.clearInterval(intervalId);
alert("Imported file for processing.");
ClearData();
}
else {
alert(result);
}
}
});
var intervalId = window.setInterval(function () {
$.getJSON('/DataImport/GetProgress', function (json) {
console.log(json.Progress);
$('#progress').html(json.Progress + '%');
});
}, 2000);
}
我需要同时击中两个控制器方法
答案 0 :(得分:1)
使用[SessionState(SessionStateBehavior.ReadOnly)]
属性装饰控制器,然后可以并行执行请求。