Redeon.SuperSiteEngineCore.Web.Eltheon.Core.WebUi
Reusable Web UI infrastructure for Eltheon Razor hosts. It provides TagHelpers, permission UI/security bridges, a navigation registry implementation, and optional test pages for Admin/User surfaces.
Neutral contracts such as navigation entries, navigation providers, permission definitions, permission providers, and grant enums live in Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Abstractions. Core.WebUi implements UI behavior around those contracts; it does not own them.
Install
dotnet add package Redeon.SuperSiteEngineCore.Web.Eltheon.Core.WebUi
Public Surface
AddEltheonCoreWebUi(...)AddEltheonCoreWebUiApplicationPart()EltheonCoreWebUiOptionsEltheonCoreWebUiMarkerv1.TagHelpersv1.Securityv1.Navigation.EltheonNavigationRegistry
TagHelpers
Core.WebUi contains reusable Bootstrap-style TagHelpers. Concrete layouts, sidebars, header/footer markup, theme assets, and tag partials remain host/template-owned.
Available TagHelpers include:
BS:ContainerBS:RowBS:ColumnBS:CardBS:CardHeaderBS:CardBodyBS:CardFooterBS:NavItemBS:NavLinkBS:NavMenuBS:NavMenuLinkBS:ButtonBS:BadgeBS:AlertBS:ButtonGroupBS:Toolbar
Razor Class Library feature pages that use Core.WebUi TagHelpers must carry their own _ViewImports.cshtml.
Permissions
Core.WebUi does not create a second permission system. It provides UI and authorization bridge types:
IEltheonPermissionEvaluatorDenyAllPermissionEvaluatorPermissionAttributePermissionTagHelperSecureContentTagHelperPermissionRenderModeCoreWebUiPermissionProvider
PermissionAttribute performs server-side authorization. PermissionTagHelper and SecureContentTagHelper are UI conveniences only. Navigation filtering is not security; protected pages, handlers, APIs, and actions must still enforce server-side authorization.
Navigation
Feature packages contribute navigation through IEltheonNavigationProvider and EltheonNavigationEntry from Core.Abstractions. Core.WebUi provides EltheonNavigationRegistry, which aggregates and validates those entries.
Navigation keys are case-insensitive and must be unique. Duplicate keys throw a clear InvalidOperationException.
Optional Test Pages
Core.WebUi includes optional integration test pages:
/Admin/CoreWebUiTest/User/CoreWebUiTest
They are controlled through EltheonCoreWebUiOptions:
EnableAdminTestPageEnableUserTestPageRegisterTestNavigation
Disabled test pages remove their route selectors through Razor Pages conventions and keep defensive PageModel checks.
Boundaries
Core.WebUi must not own:
- concrete host layouts or sidebars
- theme assets
- host permission storage
- database migrations
- plugin lifecycle
- SimpleSearch architecture
- a replacement localization system
- neutral framework contracts that belong in Core.Abstractions
Feature packages may use Core.WebUi TagHelpers and bridge types, but they must not reference the host/template project.