У меня есть экран клиента, который я создал с помощью Razor View, он имеет только все параметры CRUD.
Проблема заключается в том, что я создаю или изменяю ВСЕ ПРОСМОТР УЧЕТНОЙ ЗАПИСИ учетной записи при загрузке ... и это не правильно.
Отлично работает только Delete, когда я удаляю клиента, обновляется только таблица регистрации
Контроллер был создан с опцией Entity Framework: API-контроллер с действиями, используя Entity Famework
См. Код для моего Razor View.
@using TesteBlazor.Shared
@using TesteBlazor.Shared.Models
@page "/clientes"
@using Microsoft.JSInterop
@inject HttpClient Http
<h1> Blazor - CRUD com EF Core</h1>
<hr />
<table width="100%" style="background:#05163D;color:honeydew">
<tr>
<td width="20"> </td>
<td>
<h2>Cadastro de Clientes</h2>
</td>
<td> </td>
<td align="right">
<button class="btn btn-info" onclick="@AddNovoCliente">Incluir Novo Cliente</button>
</td>
<td width="10"> </td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</table>
<hr />
<form>
<table class="form-group">
<tr>
<td>
<label for="Name" class="control-label">Código</label>
</td>
<td>
<input type="text" class="form-control" bind="@cliente.ClienteId" readonly />
</td>
<td width="20"> </td>
<td>
<label for="Name" class="control-label">Nome</label>
</td>
<td>
<input type="text" class="form-control" bind="@cliente.Nome" />
</td>
</tr>
<tr>
<td>
<label for="Email" class="control-label">Email</label>
</td>
<td>
<input type="text" class="form-control" bind="@cliente.Email" />
</td>
<td width="20"> </td>
<td>
<label for="Pais" class="control-label">Pais</label>
</td>
<td>
<input type="text" class="form-control" bind="@cliente.Pais" />
</td>
</tr>
<tr>
<td>
<button type="submit" class="btn btn-success" onclick="@(async () => await AddCliente())"
style="width:220px;">
Salvar
</button>
</td>
</tr>
</table>
</form>
<table width="100%" style="background:#0A2464;color:honeydew">
<tr>
<td width="20"> </td>
<td>
<h2>Detalhes dos Clientes</h2>
</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</table>
@if (_clientes == null)
{
<p><em>Carregando...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Codigo</th>
<th>Nome</th>
<th>Email</th>
<th>Pais</th>
</tr>
</thead>
<tbody>
@foreach (var cli in _clientes)
{
<tr>
<td>@cli.ClienteId</td>
<td>@cli.Nome</td>
<td>@cli.Email</td>
<td>@cli.Pais</td>
<td>
<button class="btn btn-primary" onclick="@(async () => await EditCliente(@cli.ClienteId))"
style="width:110px;">
Editar
</button>
</td>
<td>
<button class="btn btn-danger" onclick="@(async () => await DeleteCliente(@cli.ClienteId))">
Deletar
</button>
</td>
</tr>
}
</tbody>
</table>
}
@functions {
Cliente[] _clientes;
Cliente cliente = new Cliente();
string ids = "0";
bool exibeLinhaIncluida = false;
//carrega clientes
protected override async Task OnInitAsync()
{
_clientes = await Http.GetJsonAsync<Cliente[]>("/api/Clientes/");
}
//adicionar novo cliene
void AddNovoCliente()
{
cliente = new Cliente();
}
// Adicionar detalhes
protected async Task AddCliente()
{
if (cliente.ClienteId == 0)
{
await Http.SendJsonAsync(HttpMethod.Post, "/api/Clientes/", cliente);
}
else
{
await Http.SendJsonAsync(HttpMethod.Put, "/api/Clientes/" + cliente.ClienteId, cliente);
}
cliente = new Cliente();
_clientes = await Http.GetJsonAsync<Cliente[]>("/api/Clientes/");
}
// Editar
protected async Task EditCliente(int clienteID)
{
ids = clienteID.ToString();
cliente = await Http.GetJsonAsync<Cliente>("/api/Clientes/" + Convert.ToInt32(clienteID));
}
// deletar
protected async Task DeleteCliente(int clienteID)
{
ids = clienteID.ToString();
await Http.DeleteAsync("/api/Clientes/" + Convert.ToInt32(clienteID));
_clientes = await Http.GetJsonAsync<Cliente[]>("/api/Clientes/");
}
}