Blazouter 1.0.8
Prefix ReservedSee the version list below for details.
dotnet add package Blazouter --version 1.0.8
NuGet\Install-Package Blazouter -Version 1.0.8
<PackageReference Include="Blazouter" Version="1.0.8" />
<PackageVersion Include="Blazouter" Version="1.0.8" />
<PackageReference Include="Blazouter" />
paket add Blazouter --version 1.0.8
#r "nuget: Blazouter, 1.0.8"
#:package Blazouter@1.0.8
#addin nuget:?package=Blazouter&version=1.0.8
#tool nuget:?package=Blazouter&version=1.0.8
Blazouter - Core Library
A powerful React Router-like routing library for Blazor applications. This is the core library that provides the foundational routing capabilities for all Blazor hosting models.
Features
- ✅ Type-safe - Full IntelliSense support
- ✅ True nested routing - Full hierarchical route structures
- ✅ Beautiful transitions - Smooth animations between routes
- ✅ Programmatic navigation - Navigate imperatively with ease
- ✅ Lazy loading - Load components on-demand for better performance
- ✅ Built-in route guards - Protect routes with authentication/authorization
- ✅ Dynamic route parameters - Easy access to route and query parameters
- ✅ Flexible layout system - Default and per-route layouts with @Body support
Installation
dotnet add package Blazouter
For hosting-specific implementations, also install:
- Blazor Server:
Blazouter.Server - Blazor Hybrid/MAUI:
Blazouter.Hybrid - Blazor WebAssembly:
Blazouter.WebAssembly
Quick Start
Blazor WebAssembly
// Program.cs
using Blazouter.Extensions;
builder.Services.AddBlazouter();
@using Blazouter.Models
@using Blazouter.Components
<Router Routes="@_routes" DefaultLayout="typeof(MainLayout)">
<NotFound>
<h1>404 - Page Not Found</h1>
</NotFound>
</Router>
@code {
private List<RouteConfig> _routes = new()
{
new RouteConfig
{
Path = "/",
Component = typeof(Home),
Transition = RouteTransition.Fade
}
};
}
Blazor Server
// Program.cs
using Blazouter.Extensions;
using Blazouter.Server.Extensions;
builder.Services.AddBlazouter();
app.MapRazorComponents<App>()
.AddBlazouterSupport()
.AddInteractiveServerRenderMode();
Blazor Hybrid (MAUI)
// MauiProgram.cs
using Blazouter.Hybrid.Extensions;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder.UseMauiApp<App>();
builder.Services.AddMauiBlazorWebView();
// Add Blazouter support
builder.AddBlazouterSupport();
return builder.Build();
}
}
@using Blazouter.Models
@using Blazouter.Components
<Router Routes="@_routes">
<NotFound>
<h1>404 - Page Not Found</h1>
</NotFound>
</Router>
@code {
private List<RouteConfig> _routes = new()
{
new RouteConfig
{
Path = "/",
Component = typeof(Home),
Transition = RouteTransition.Fade
}
};
}
Key Components
Router Component
The main router component that handles route matching and rendering.
RouterOutlet Component
Used in parent components to render child routes in nested routing scenarios.
RouterLink Component
Navigation links with automatic active state detection.
<RouterLink Href="/" Exact="true" ActiveClass="active">Home</RouterLink>
<RouterLink Href="/about" ActiveClass="active">About</RouterLink>
Layouts
Set a default layout for all routes and override per route:
<Router Routes="@_routes" DefaultLayout="typeof(MainLayout)">
<NotFound><h1>404</h1></NotFound>
</Router>
@code {
private List<RouteConfig> _routes = new()
{
// Uses DefaultLayout (MainLayout)
new RouteConfig { Path = "/", Component = typeof(Home) },
// Override with different layout
new RouteConfig
{
Path = "/admin",
Component = typeof(Admin),
Layout = typeof(AdminLayout)
},
// No layout for this route
new RouteConfig
{
Path = "/print",
Component = typeof(Print),
Layout = null
}
};
}
Route Configuration
new RouteConfig
{
Path = "/users",
Component = typeof(UserLayout),
Title = "Users",
Layout = typeof(MainLayout), // Optional: override default layout
Transition = RouteTransition.Slide,
Guards = new List<Type> { typeof(AuthGuard) },
Children = new List<RouteConfig>
{
new RouteConfig
{
Path = ":id",
Component = typeof(UserDetail)
}
}
}
Route Guards
Create custom guards by implementing IRouteGuard:
using Blazouter.Guards;
using Blazouter.Models;
public class AuthGuard : IRouteGuard
{
public async Task<bool> CanActivateAsync(RouteMatch match)
{
return await IsAuthenticated();
}
public Task<string?> GetRedirectPathAsync(RouteMatch match)
{
return Task.FromResult<string?>("/login");
}
}
Lazy Loading
new RouteConfig
{
Path = "/reports",
ComponentLoader = async () =>
{
await Task.Delay(100); // Simulated delay
return typeof(ReportsPage);
}
}
Programmatic Navigation
@inject RouterNavigationService NavService
private void NavigateToUser()
{
NavService.NavigateTo("/users/123");
}
Route Parameters
@inject RouterStateService RouterState
protected override void OnInitialized()
{
var userId = RouterState.GetParam("id");
}
Transitions
Built-in transitions: None, Pop, Blur, Fade, Flip, Lift, Scale, Slide, Swipe, Reveal, Rotate, Curtain, SlideUp, SlideFade, Spotlight
new RouteConfig
{
Path = "/",
Component = typeof(Home),
Transition = RouteTransition.Fade
}
Multi-Platform Support
- Blazor Server
- Blazor WebAssembly
- Blazor Hybrid (MAUI)
- .NET 6.0, 7.0, 8.0, 9.0, 10.0
Documentation
License
MIT License - see LICENSE for details.
Support
Made with ❤️ for the Blazor community
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.AspNetCore.Components.Web (>= 10.0.0)
-
net6.0
- Microsoft.AspNetCore.Components.Web (>= 6.0.36)
-
net7.0
- Microsoft.AspNetCore.Components.Web (>= 7.0.20)
-
net8.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.22)
-
net9.0
- Microsoft.AspNetCore.Components.Web (>= 9.0.11)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Blazouter:
| Package | Downloads |
|---|---|
|
Blazouter.WebAssembly
WebAssembly-specific extensions for Blazouter routing library. This package provides optimized components and integration for Blazor WebAssembly applications with client-side routing enhancements. Enables React Router-like routing features in Blazor WASM with full support for nested routes, route guards, lazy loading, smooth transitions, and programmatic navigation. Optimized for reduced bundle size and fast client-side performance. |
|
|
Blazouter.Server
Server-side specific extensions for Blazouter routing library. This package provides the necessary components and integration for Blazor Server applications, including AddBlazouterSupport extension method. Enables React Router-like routing features in Blazor Server mode with full support for nested routes, route guards, lazy loading, smooth transitions, and programmatic navigation. |
|
|
Blazouter.Hybrid
Blazor Hybrid/MAUI-specific extensions for Blazouter routing library. This package provides optimized components and integration for Blazor Hybrid applications running on .NET MAUI. Enables React Router-like routing features in native mobile and desktop apps with full support for nested routes, route guards, lazy loading, smooth transitions, and programmatic navigation. Includes platform-specific optimizations for iOS, Android, macOS, and Windows. |
|
|
Blazouter.Web
Web App specific extensions for Blazouter routing library. This package provides the necessary components and integration for Blazor Web App applications (.NET 8+) that support both Server and WebAssembly render modes (Auto/Interactive). Enables React Router-like routing features in the unified Blazor Web App model with full support for nested routes, guards, lazy loading, and smooth transitions. Works seamlessly with InteractiveServer, InteractiveWebAssembly, and InteractiveAuto render modes. |
GitHub repositories
This package is not used by any popular GitHub repositories.
See CHANGELOG.md: https://github.com/Taiizor/Blazouter/blob/develop/CHANGELOG.md