1.1 KiB
1.1 KiB
ViewData (Website Templates)
ViewData is the only allowed input type for Templates in apps/website.
1) Definition
ViewData is a JSON-serializable, template-ready data structure:
- primitives (strings/numbers/booleans)
- arrays and plain objects
nullfor missing values
2) What ViewData is NOT
ViewData is not:
- a Page DTO (raw transport)
- a ViewModel (client-only class)
- a Display Object instance
3) Construction rules
ViewData MUST be created in client code:
- Initial SSR-safe render:
ViewData = fromDTO(PageDTO) - Post-hydration render:
ViewData = fromViewModel(ViewModel)
Templates MUST NOT compute derived values.
4) Determinism rules
Any formatting used to produce ViewData MUST be deterministic.
Forbidden anywhere in formatting code paths:
Intl.*Date.toLocaleString()/Date.toLocaleDateString()/Date.toLocaleTimeString()
Reason: SSR and browser outputs can differ.
5) Relationship to Display Objects
Display Objects are used to implement formatting/mapping, but their instances MUST NOT be stored inside ViewData.
Only primitive outputs produced by Display Objects may appear in ViewData.