Одна возможность состоит в том, чтобы разделить это действие на две части: одну, которая будет отображать простой вид, и другую, которая будет выполнять тяжелую атлетику и визуализировать частичную часть.Поэтому, когда учитель входит в систему, вы перенаправляете на первое действие и отображаете простое представление HTML, содержащее счетчик.Затем вы вызываете AJAX-вызов для второго действия, чтобы получить доступ к данным, вводите частичное в DOM и скрываете прогресс.
Таким образом, вы можете поместить что-то вроде этого в представление:
<img id="progress" src="progress.gif" alt="" />
<div id="result" data-url="<%= Url.Action("TeacherData") %>"></div>
, а затем в отдельном файле js вызвать вызов AJAX:
$(function() {
$.ajax({
url: $('#result').data('url'),
type: 'POST',
complete: function() {
$('#progress').hide();
},
success: function(result) {
$('#result').html(result);
}
error: function() {
alert('oops');
}
});
});
и на вашемконтроллер:
public ActionResult Teacher()
{
return View();
}
[HttpPost]
public ActionResult TeacherData()
{
var model = ... do the heavy data access
return PartialView(model);
}