![]()  | 
    
     Hoje vamos criar uma aplicação Blazor do lado do servidor e realizar um CRUD usando o EF Core 3.1.  | 
  
Vamos continuar a primeira parte do artigo definindo os demais componentes em nosso projeto Blazor Server para realizar as operações CRUD usando o EF Core 3.1.
		
		
		![]()  | 
	
Vamos ter que criar 3 componentes Blazor todos na pasta Pages :
Para criar cada componente selecione a pasta Pages e acione o menu Project ->Add New Item;
A seguir escolha Razor Component, informe o nome e clique no botão Add;
Neste artigo vamos criar o componente para incluir um novo aluno.
Como vamos realizar a entrada de dados precisamos validar os dados e para isso vamos usar o recurso Data Annotations do namespace System.ComponentModel.DataAnnotations.
Assim vamos aplicar os atributos na entidade Estudante definida na pasta Data e definir a validação:
|     
		public class Estudante { public int EstudanteId { get; set; } 
		      
		 [Required(ErrorMessage = "O nome do 
		aluno é obrigatório")]      
		  [Required(ErrorMessage = "Informe o 
		email do aluno")]       
		 [Required(ErrorMessage = "A idade 
		deve estar entre 15 e 65 anos")]  | 
	
Aqui estamos usando os atributos :
Para as propriedades Email e Idade estamos aplicando dois atributos. O primeiro obriga a entrada do valor e o segundo realiza uma validação mais específica.
Para o nosso exemplo temos definido que:
Validação de dados com EditForm
Para poder realizar a validação no formulário de entrada de dados podemos definir o formulário usando o componente EditForm e utilizar o componente <DataAnnotationsValidator> para ativar a validação definida com Data Annotations.
Um conjunto de componentes de entrada internos está disponível para receber e validar a entrada do usuário. As entradas são validadas quando são alteradas e quando um formulário é enviado. Os componentes de entrada disponíveis no componente EditForm são mostrados na tabela a seguir.
| Componente de entrada | Renderizado como… | 
|---|---|
| InputText | <input> | 
| InputTextArea | <textarea> | 
| InputSelect | <select> | 
| InputNumber | <input type="number"> | 
| InputCheckbox | <input type="checkbox"> | 
| InputDate | <input type="date"> | 
Todos os componentes de entrada, incluindo EditForm, dão suporte a atributos arbitrários. Qualquer atributo que não corresponda a um parâmetro de componente é adicionado ao elemento HTML renderizado.
O componente EditForm cria um EditContext como um valor em cascata que controla os metadados sobre o processo de edição, incluindo quais campos foram modificados e as mensagens de validação atuais.
O EditForm também fornece eventos convenientes para envios válidos e inválidos como:
Como alternativa, use OnSubmit para disparar a validação e verificar os valores do campo com o código de validação personalizado.
Para exibir as mensagens de validação podemos usar os componentes:
Vamos então ao trabalho...
Criando o componente AddAluno
No componente AddAluno para incluir um novo aluno vamos ter que validar os dados entrados pelo usuário.
O Blazor suporta formulários e a validação usando os atributos Data Annotations que já definimos na entidade Estudante. Assim vamos:
Após criar o componente AddAluno inclua o código abaixo:
								@page "/addaluno"
								@inject HttpClient  http
@inject NavigationManager NavigationManager
								<h2>Criar Aluno</h2>
<hr />
								<EditForm Model="@aluno" OnValidSubmit="CreateAluno">
    <DataAnnotationsValidator />
    <ValidationSummary />
								    <div class="row">
        <div class="col-md-8">
            <div class="form-group">
                <label for="Nome" class="control-label">Nome</label>
                <InputText @bind-Value="@aluno.Nome" class="form-control" />
                <ValidationMessage For="@(()=> aluno.Nome)" />
            </div>
            <div class="form-group">
                <label for="Email" class="control-label">Email</label>
                <InputText @bind-Value="@aluno.Email" class="form-control" />
                <ValidationMessage For="@(()=> aluno.Email)" />
            </div>
            <div class="form-group">
                <label for="Idade" class="control-label">Idade</label>
                <InputNumber @bind-Value="@aluno.Idade" class="form-control" />
                <ValidationMessage For="@(()=> aluno.Idade)" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Salvar" />
                <input type="button" class="btn" @onclick="@Cancel" value="Cancelar" />
            </div>
        </div>
    </div>
</EditForm>
								@code {
								    Estudante aluno = new Estudante();
								    protected async Task CreateAluno()
    {
        await http.PostJsonAsync("/api/estudante/", aluno);
        NavigationManager.NavigateTo("alunos");
    }
								    void Cancel()
    {
        NavigationManager.NavigateTo("alunos");
    }
}
								 | 
							
Neste código estamos injetando o serviço HttpClient e o serviço NavigationManager. A seguir:
Executando o projeto teremos o resultado abaixo:
						
Na próxima parte do artigo vamos definir o componente para editar dados de um aluno existente.
						Pegue o código do projeto 
						aqui: 
						
						Blazor_Crud1_2.zip 
						(sem as referências)
						
						"Levando ele mesmo(Jesus) em 
						seu corpo os nossos pecados sobre o madeiro, para que, 
						mortos para os pecados, pudéssemos viver para a justiça; 
						e pelas suas feridas fostes sarados."
						
						1 Pedro 2:24
 
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
ASP .NET Core - Criando uma aplicação com Angular 2 - Macoratti.net
ASP .NET Core - Criando uma aplicação Web no ... - Macoratti.net
ASP .NET Core - Iniciando com o Blazor - Macoratti
ASP .NET Core - CRUD usando Blazor e Entity ... - Macoratti
Blazor - O novo framework SPA da Microsoft - Macoratti.net
Visual Studio Code - Suporte ao desenvolvimento Blazor