@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();
}
}
}