Razor Pages ASPNET Core CRUD Básico

Fulvio Cezar Canducci Dias
5 min readDec 21, 2017

--

A continuação mediante o tutorial de configuração de Razor Pages em um projeto em branco, é a abordagem de um cadastro básico, ou seja, CRUD(Create, Read, Update and Delete) em um determinada tabela do seu banco de dados.

A idéia central é mostrar que cada página terá a sua responsabilidade, uma de mostra a lista de credito, outra para cadastrar novo credito, outra para visualizar e editar o registro de credito e por fim excluir o credito com esse novo template de desenvolvimento para Web.

Com a explicação anterior, tem pasta com o nome de Pages para colocar as páginas, então, crie uma pasta Admim e dentro uma pasta Creditocomo demostrado na figura logo abaixo:

Pasta Admin/Credito

Bom nesse momento vou configurar com esse tutorial Entity Framework Core 2 a tabela Credits do meu Banco de dados DatabaseRazorPages:

Tabela Credits

e as classes que farão parte do modelo lógico e configuração Entity Framework Core 2 na pasta Models:

Class Credit
Database (Entity Framework)
Exemplo da pasta Models

Para que funcione a injeção de dependência da classe criada Database acrescente duas linhas no arquivo Startup.cs no método ConfigureServices:

  • services.AddEntityFrameworkSqlServer();
  • services.AddDbContext<Database>();

Nota: também foi configurado a geração de rotas com os nomes tudo em minusculo, particularmente gosta da estética e mantem um padrão:

  • services.AddRoutingoptions.LowercaseUrls = true
Startup.cs

Próximo passo é voltar a pasta Pages/Admin/Credito e criar a primeira página para que a rota seja carregada sem problemas, ou seja, admin/credito segue a nomenclatura de rotas pela pasta criada e isso é um fator importante a ser observado e consequentemente a primeira página dessa pasta deve ser Index (que é o padrão) e após a sua criação abra o seu arquivo de programação Index.cshtml.cs que recebera a seguinte programação:

IndexModel

Sendo que foi injetado a classe Database no construtor (nota: todas as classes desse exemplo é injetado a classe Database que é a Framework de persistência Entity Framework Core 2para a manipulação de dados) no método OnGet passar os dados obtidos na consulta para um propriedade public criada para receber esses valores (public IEnumerable<Credit> Credits), porque, na parte do html da página o Razor precisa identificar as propriedades pelo modelo enviado para gerar a página com todas as informações da tabela Credits.

Logo no código abaixo tem o exemplo de obtenção dessa lista que é Model.Credits e com essa enumeração de resultados preencher a tabela com os dados de cada item, exemplo:

Index.cshtml

A segunda página é aCreate que tem a sua responsabilidade criar registros para a tabela Credits e após a criação da página o seu código de programação:

CreateModel

observe que agora além da injeção normal que acontece em todos Razor Pages desse tutorial agora temos dois métodos OnGet que é o que carrega a página e OnPost que é responsável em ser executado após clicar no botão submit de um <form method="post">, após o preenchimento do formulário é enviado as informações e esse método fica responsável em salvar as informações enviadas.

Tem também um recurso de que ao decorar um propriedade com a classe BindProperty e ao submeter esse formulário essa propriedade será carregada com as informações do referente formulário e pode ser utilizada para as operações de CRUD. e a página Create.cshtml:

Create.cshtml

A próxima página é Edit.cshtml que tem como razão principal editar os registro já inseridos na base no seu código o métodoOnGet tem um parâmetro inteiro (que pode ser null) com o nomeid que recupera o código e carrega a propriedade public Credit Credit.

O métodoOnPost tem a função de atualizar o registro com a novas informações que foram carregadas na propriedade public Credit Credit e salvar as alterações na base.

EditModel

A página é bem parecida com Create.cshtml mas, tem um item um input hidden que carrega o id que é a identificação do registro:

Um página de detalhes como exemplo de exibição de informação de um registro na base, criado com o nome de Details.cshtml no seu método OnGet tem um paramento igual da página Edit.cshtml e a funcionalidade bem parecida para o carregamento da informação:

Details.cs

Na página Details.cshtml foi exibida a informação e com 3 links oferecendo o redirecionamento para editar, excluir o registro e voltar a página inicial:

O último exemplo é a pagina Delete que tem a funcionalidade de excluir um registro da base, é bem parecida com a Edit mas, o que muda realmente é o método utilizado para excluir o registro pela camada de persistência:

DeleteModel

e a página referente ao código:

Delete.cshtml

O layout final das pastas e seus arquivos:

A rotas padrão que permite o acesso a essas páginas são:

  • admin/credito
  • admin/credito/index
  • admin/create
  • admin/edit/{id}
  • admin/details/{id}
  • admin/delete/{id}

e vale uma explicação que o padrão dos parâmetros das rotas é QueryString, mas, com adição nas páginas da configuração: @page "{id:int?}" isso garante um padrão igual ao MVC tradicional que em vez de ser assim: admin/edit?id=1 ficam admin/edit/1.

Esse tutorial é também básico, mas, as funcionalidades são bem parecida com o MVC tradicional, muda em certos aspecto como fazer, mas, a ideia central é que funcionem da mesma maneira e tragam o mesmo resultados.

Um outro ponto importante é que a geração dessas página já exite o seu gerador (que com um CRUDna camada de persistência gera todas as páginas) e funciona perfeitamente, mas, algumas configurações que estão nesse tutorial como por exemplo das rotas é o programador quem faz.

As imagens representam cada funcionalidade, observe:

Páginas Index e Create
Páginas Edit, Detalhes e Delete

--

--

Fulvio Cezar Canducci Dias
Fulvio Cezar Canducci Dias

Written by Fulvio Cezar Canducci Dias

Bacharel em Sistemas de Informação, MTAC (Multi-Plataform Technical Audience Contributor-Microsoft), BackEnd C# e PHP e Developer Web

No responses yet