@page "/server/{id:int?}" @inject NavigationManager NavigationManager @inject IJSRuntime JSRuntime @if (Id.HasValue) {

Edit server

} else {

Add server

} @if (server != null) { @if (server.Id > 0) { }
@if (server.Id > 0) { } else { }   Close
} @code { [Parameter] public int? Id { get; set; } [SupplyParameterFromForm] private Server? server { get; set; } [SupplyParameterFromQuery] public string? City { get; set; } protected override void OnParametersSet() { if (this.Id.HasValue) { server ??= ServersRepository.GetServerById(this.Id.Value); } else { server ??= new Server() { IsOnline = false }; } if (server != null && !string.IsNullOrEmpty(this.City)) { server.City = this.City; } } private void SubmitServer() { if (server != null) { if (this.Id.HasValue) { ServersRepository.UpdateServer(server.Id, server); } else { ServersRepository.AddServer(server); } } // An exception is raised when debugging from VS Code, but not when using dotnet watch. NavigationManager.NavigateTo($"/servers/back_from/{this.server?.City}"); } private async Task OnBeforeInternalNavigation(LocationChangingContext context) { var isConfirmed = await JSRuntime.InvokeAsync("confirm", "Are you sure you want to leave this page?"); if (!isConfirmed) { context.PreventNavigation(); } } }