Asp.Net Core 2.2.Приложение MVC, которое я пытаюсь превратить в Прогрессивное веб-приложение (PWA) с использованием пакета Mads Kristensen's WebEssentials.AspNetCore.PWA https://github.com/madskristensen/WebEssentials.AspNetCore.ServiceWorker, и у меня возникают некоторые проблемы, обеспечивающие работу определенных страниц в автономном режиме.
Основная функциональность приложения включает в себя ряд вопросов, представляемых пользователю с ответами, сохраненными в базе данных.Это представление заполняется ViewModel, который запрашивает базу данных, чтобы отобразить правильную информацию.
Мой вопрос: поскольку содержимое базы данных редко изменяется, могу ли я кэшировать результат запроса, чтобы все приложение моглоработать оффлайн?И если да, то как лучше всего это делать?
Мой маршрут карты по умолчанию - controller / action / id, поэтому при попытке использовать routToPreCache в appsettings.json Я не могу включить идентификатор для вновь созданного«инцидент», поэтому он не работает - я пропустил простой трюк или решение намного сложнее?
Мой контроллер для представления выглядит следующим образом:
public class PathwayController : Controller
{
private readonly ApplicationDbContext _context;
public PathwayController(ApplicationDbContext context)
{
_context = context;
}
public ActionResult Pathway(int? id, int? index)
{
int currentIndex = index.GetValueOrDefault();
if (currentIndex == 0)
{
ViewBag.NextIndex = 1;
}
else
{
ViewBag.NextIndex = index + 1;
}
PathwayViewModel path = new PathwayViewModel();
var incident = _context.Incident
.Include(i => i.IncidentType)
.FirstOrDefault(m => m.Id == id);
path.Incident = incident;
var stageConditions = _context.StageCondition.Where(x => x.IncidentTypeId == incident.IncidentTypeId)
.Include(s => s.Stage)
.Include(o => o.Stage.Outcome)
.OrderBy(x => x.Id)
.Skip(currentIndex)
.Take(1)
.FirstOrDefault();
path.StageCondition = stageConditions;
// Validation
var stageConditionTest = _context.StageCondition.Where(x => x.IncidentTypeId == incident.IncidentTypeId);
ViewBag.MaxIndex = stageConditionTest.Count();
//save stage to incident
incident.StageId = stageConditions.Stage.Id;
_context.Update(incident);
_context.SaveChanges();
return View(path);
}