dotnet/aspnetcore · error · NotImplementedException
The type does not support supplying . To add support, that…
Error message
The type {GetType().FullName} does not support supplying {nameof(NavigationOptions)}. To add support, that type should override {nameof(NavigateToCore)}(string uri, {nameof(NavigationOptions)} options). What it means
The base NavigationManager.NavigateToCore(string, NavigationOptions) throws NotImplementedException by default. Custom subclasses written before .NET 6 that only override the older NavigateToCore(string, bool) overload will not support options-based navigation (including replace=true).
Solutions
- Override NavigateToCore(string uri, NavigationOptions options) in the custom subclass and apply the options.
- Update to a newer version of the library/NavigationManager implementation.
- Avoid passing NavigationOptions or replace=true if the implementation does not support it.
Example fix
// before
protected override void NavigateToCore(string uri, bool forceLoad) { ... }
// after
protected override void NavigateToCore(string uri, NavigationOptions options)
{
// apply options.ForceLoad, options.ReplaceHistoryEntry
...
} Defensive patterns
Strategy: validation
Validate before calling
// In a custom NavigationManager, override the options overload.
protected override void NavigateToCore(string uri, NavigationOptions options)
{
// honor options.ForceLoad and options.ReplaceHistoryEntry
NavigateToCore(uri, options.ForceLoad);
} Prevention
- Override NavigateToCore(string, NavigationOptions) in any custom NavigationManager subclass.
- Update third-party NavigationManager implementations to the latest version.
- Avoid passing replace=true or NavigationOptions unless the subclass supports them.
When it happens
Trigger: A custom NavigationManager subclass overrides NavigateToCore(string, bool) but not NavigateToCore(string, NavigationOptions), then a caller passes NavigationOptions or replace=true.
Common situations: Legacy or third-party NavigationManager not updated for .NET 6+, a test double that omits the new overload, or an older library version in a newer app.
Related errors
- ' ' already initialized.
- The URI ' ' is not a relative URI. When…
- No enhanced programmatic navigation handler has been…
- Only one interactive runtime may enable navigation…
- Renderer with ID ' ' is not listening for navigation events
AI-assisted analysis of dotnet/aspnetcore@3600ca084e (2026-08-11).
Data as JSON: /api/errors/dc50af56922b8125.
Report an issue: GitHub.
Appendix: source
Thrown at src/Components/Components/src/NavigationManager.cs:245
/// </summary>
/// <param name="uri">The destination URI. This can be absolute, or relative to the base URI
/// (as returned by <see cref="BaseUri"/>).</param>
/// <param name="forceLoad">If true, bypasses client-side routing and forces the browser to load the new page from the server, whether or not the URI would normally be handled by the client-side router.</param>
// The reason this overload exists and is virtual is for back-compat with < 6.0. Existing NavigationManager subclasses may
// already override this, so the framework needs to keep using it for the cases when only pre-6.0 options are used.
// However, for anyone implementing a new NavigationManager post-6.0, we don't want them to have to override this
// overload any more, so there's now a default implementation that calls the updated overload.
protected virtual void NavigateToCore([StringSyntax(StringSyntaxAttribute.Uri)] string uri, bool forceLoad)
=> NavigateToCore(uri, new NavigationOptions { ForceLoad = forceLoad });
/// <summary>
/// Navigates to the specified URI.
/// </summary>
/// <param name="uri">The destination URI. This can be absolute, or relative to the base URI
/// (as returned by <see cref="BaseUri"/>).</param>
/// <param name="options">Provides additional <see cref="NavigationOptions"/>.</param>
protected virtual void NavigateToCore([StringSyntax(StringSyntaxAttribute.Uri)] string uri, NavigationOptions options) =>
throw new NotImplementedException($"The type {GetType().FullName} does not support supplying {nameof(NavigationOptions)}. To add support, that type should override {nameof(NavigateToCore)}(string uri, {nameof(NavigationOptions)} options).");
/// <summary>
/// Refreshes the current page via request to the server.
/// </summary>
/// <remarks>
/// If <paramref name="forceReload"/> is <c>true</c>, a full page reload will always be performed.
/// Otherwise, the response HTML may be merged with the document's existing HTML to preserve client-side state,
/// falling back on a full page reload if necessary.
/// </remarks>
public virtual void Refresh(bool forceReload = false)
=> NavigateTo(Uri, forceLoad: true, replace: true);
/// <summary>
/// Handles setting the NotFound state.
/// </summary>
public void NotFound() => NotFoundCore();
private void NotFoundCore()View on GitHub (pinned to 3600ca084e)