Обновление 2/14 - У кого-нибудь есть идеи, как мне помочь с этим?
У меня есть процесс импорта файлов, который занимает от нескольких секунд дополная минута до завершения.
Мне нужно предоставить пользователю обновление о том, что происходит.Я «преобразованный» программист WinForms, который все еще работает над переходом на эту «веб-вещь», поскольку она, похоже, набирает обороты.
Как мне это сделать?Обычно я обновляю экранный элемент управления или счетчик.Если это длинный ответ, мне не нужен подробный кодовый ответ.Работают также ссылки на хорошие примеры или учебные пособия.
Я делаю вызов контроллеру с помощью сообщения ajax:
// Make your POST
$.ajax({
type: "POST",
url: '@Url.Action("ReadAndSaveCSVData", "Home")',
data: fdata,
contentType: false,
processData: false,
//async: false,
success: function (response) {
if (response != null) {
if (response) {
alert("Data Imported");
$('#fUpload').val('');
}
else {
alert("Import Failed");
}
}
//load1.style.display = 'none';
},
error: function (e) {
//load1.style.display = 'none';
//alert(e.responseText);
}
});
Контроллер, выполняющий эту работу, настроен следующим образом:
using (LOBContext db = new LOBContext())
{
using (var transaction = db.Database.BeginTransaction())
{
try
{
LOBContext db2 = new LOBContext(); //create a seperate data context for creating new records that need to be accessed here.
foreach (var li in list)
{
PayrollTimecardEntries tc = new PayrollTimecardEntries();
//Get the Id's of the related records, or create them
getPayrollDeptType(db, db2, li, tc);
getEmployeeId(db, db2, li, tc);
getPunchTypeId(db, db2, li, tc);
tc.PunchDate = li.punchDate;
tc.Hours = li.hours;
tc.PaycorCreatedDatetime = li.paycoreCreatedDatetime;
tc.CreatedbyPaycorUsername = li.paycoreCreatedByUserName.Trim('"');
//see if this is a new entry or not
int result = (from seek in db2.PayrollTimecardEntries
where seek.EmployeeId == tc.EmployeeId &&
seek.Hours == tc.Hours &&
seek.PaycorCreatedDatetime == tc.PaycorCreatedDatetime
select seek.Id).FirstOrDefault();
if (result == 0) //only add new timecard entries
{
db2.PayrollTimecardEntries.Add(tc);
db2.SaveChanges();
}
}
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
}
}
importSuccess = true;
}
}
}
catch (Exception ex)
{
throw ex;
}
return importSuccess;