Мне нужно получить индикатор выполнения для обновления в зависимости от количества выполненных заданий. Количество заполненных заданий сохраняется в таблице рабочих мест базы данных SQL Server. Мне нужно, чтобы приложение ASP.NET MVC 4 запрашивало БД каждые 3 секунды, чтобы количество заданий конкурировало и использовало эти данные, чтобы обновить индикатор выполнения, который удерживается в частичном представлении. Таймер работает, и он вызывает мое действие _getforStatus в StatusController, и он, кажется, вызывает EntityDB, но никогда не кажется, что он вызывает представление, отличное от того, перед чем говорит таймер. Как я могу обновить индикатор выполнения каждые 3 секунды?Как обновить частичный просмотр каждые 3 секунды в MVC 4?
Заголовок мой взгляд _Layout.cshtml вызывает инициирование таймера, который находится в StatusController так:
<head>
...
@Html.Action("InitTimer", 'Status")
...
</head>
Кроме того, по мнению _layout я называю частичный вид в Jumbotron как так:
<div class="jumbotron" id=progress">
@{Html.RenderAction("_GetforStatus", "Status");}
</div>
контроллер состояния кодируется следующим образом:
public class StatusController : Controller
{
IntegrationDBEntities _db;
Private Timer timer1;
Public void initTimer()
{
timer1 = new Timer();
timer1.elapsed += new ElapsedEventhandler(timer_Elapsed(;
timer1.interval = 3000;
timer1.Start();
}
Private void timer_Elapsed(Object sender, EventArgs e)
{
_GetforStatus();
}
[ChildActiononly]
public PartialViewResult _GetforStatus(0
{
_db = new IntegrationDBEntities();
ViewDataModel - _db.Jobs.ToList();
return partialView();
}
EDIT: Я также попробовал следующий код Ajax. У меня нет ошибки, но мой прогресс бар не обновляется:
<script>
function loadPartialView() {
$.ajax({
url: '@url.Action("_GetforStatus', "Status")",
type: 'GET',
dataType: 'html',
success: function(result) {
$('progress').html(result);
}
});
}
$function() {
loadPartialView();
window.setInterval("loadPartialView()", 3000);
});
</script>
Я не уверен, если он не работает до н.э. я не представлял «Html.RenderAction» в JS правильно или что.
Для таких вещей я предпочитаю использовать таймер jquery на вид http://www.sitepoint.com/settimeout-example/. в таймере выполните вызов ajax, чтобы вернуть частичные или просто данные, необходимые для обновления индикатора выполнения. –
Я попытался выполнить другое задание, которое дало решение Ajax аналогичному вопросу, но я не мог заставить его работать. Не могли бы вы показать мне пример, используя мой код выше о том, как именно я реализую это с помощью синтаксиса бритвы? – antman1p
Можете ли вы опубликовать то, что вы попытались с помощью своего ajax-звонка, и сообщить мне, какую ошибку вы получали? –