Eltheon Core.WebUi
Core.WebUi is the neutral Web UI foundation for Eltheon Razor hosts. It provides reusable UI contracts, Bootstrap-style TagHelpers, permission UI bridges, navigation contracts, and optional Admin/User integration test pages.
The package is infrastructure. It must not reference the host or template project. Layouts, sidebars, header/footer markup, theme assets, and tag partial views stay host-owned.
Public Surface
Core.WebUi exposes these main areas:
v1.TagHelpersv1.Securityv1.NavigationEltheonCoreWebUiOptionsEltheonCoreWebUiMarkerAddEltheonCoreWebUi(...)AddEltheonCoreWebUiApplicationPart()
TagHelpers
Neutral TagHelper classes live in Core.WebUi. Concrete Razor partials stay in the host/template.
Available Bootstrap-style TagHelpers:
BS:ContainerBS:RowBS:ColumnBS:CardBS:CardHeaderBS:CardBodyBS:CardFooterBS:NavItemBS:NavLinkBS:NavMenuBS:NavMenuLinkBS:ButtonBS:BadgeBS:AlertBS:ButtonGroupBS:Toolbar
Core.WebUi renders additional HTML attributes through a safe attribute renderer. Card header and footer content is passed to template-owned partials instead of being built through manual HTML string interpolation.
Permissions
Core.WebUi does not create a second permission system. It only provides bridge types:
IEltheonPermissionEvaluatorDenyAllPermissionEvaluatorPermissionAttributePermissionTagHelperSecureContentTagHelperPermissionRenderModeCoreWebUiPermissionProvider
PermissionAttribute uses async authorization. PermissionTagHelper supports hide, disable, and readonly rendering modes. SecureContentTagHelper intentionally remains render-or-hide.
Permission TagHelpers are UI convenience only. Server-side authorization remains mandatory for protected pages, handlers, APIs, and actions.
Navigation
Navigation contributions use EltheonNavigationEntry through IEltheonNavigationProvider. The host renders aggregated entries through IEltheonNavigationRegistry.
Supported entry types:
GroupLinkMenuMenuLinkDivider
Navigation keys must be unique case-insensitively. Duplicate keys throw a clear InvalidOperationException.
Navigation filtering is not security. Every protected page or action must still enforce server-side authorization.
Test Pages
Core.WebUi contains optional Admin/User 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
Feature packages may use Core.WebUi TagHelpers and contracts, but they must not reference the host/template project.