Timesheet CRUD Index Page (.cshtml)
- Git repository at: https://dev.azure.com/jones-steve/_git/Timesheet
- Build & Deployed from Azure Devops Pipeline (with Unit tests)
-
1 of 3 front-ends using the same Application Layer (helpers, models, repository, services, validation)
- Blazor hosted on Azure at: https://timesheetblazorserver-f3b8ejfeeycydhcu.uksouth-01.azurewebsites.net/
- MVC Classic hosted on Azure at: https://cmaptimesheet-gff8embhgmbbh2ec.uksouth-01.azurewebsites.net/
- Hybrid MVC/Blazor architecture hosted on Azure at: https://timesheetmvcrazorcomponents-dxd2hbdkezfxgmh9.uksouth-01.azurewebsites.net/
- Repository uses in‑memory storage for demo purposes (no data perpetuation beyond session).
Timesheet CRUD Razor Component (.razor)
Abandoned
Razor Components in .NET 8 are designed for Blazor-first apps, not MVCThe hybrid story is “supported”, but in reality:
- the pipeline order is fragile
- hydration silently fails
- errors hide behind _framework/blazor.server.js
- namespaces matter
- routing order matters
- antiforgery matters
- the hub must be mapped in the right place
- the root component must exist
- the layout must not interfere
- MVC tag helpers can break hydration
God help anyone who ever needs to do it this way!