🔥 Apps, books, system as a service, podcast and more



MVC e Entity Framework Parte 4

Caro(a) Leitor(a), hoje vou dar continuidade ao nosso projeto feito em três partes até agora. Hoje o comando e funcionalidade que vou mostrar é o “delete” de uma linha. Se você não viu até agora as partes anteriores, acesse os links abaixo:

Parte 1 - http://www.ecode10.com/artigo/1657/MVC-e-Entity-Framework-Parte-1
Parte 2 - http://www.ecode10.com/artigo/1662/MVC-e-Entity-Framework-Parte-2
Parte 3 - http://www.ecode10.com/artigo/1667/MVC-e-Entity-Framework-Parte-3

Utilizado
.NET Framework 4.0
Linguagem C#
Ferramenta Visual Studio 2012
Projeto do tipo MVC 4.0

Para clicar no link “delete” é necessário primeiro buscar o item e pedir a confirmação do usuário. Para esse tipo de funcionalidade, vou criar um método e uma página “template”. Depois para confirmar a deleção, vou criar outro método para deletar do banco de dados.

Os dois métodos serão feitos dentro da classe “SiteController.cs”. 

Primeiro passo para o “Delete”

O primeiro passo para confirmar o “delete” é preencher o método “ActionResult” e depois dele gerar a View. Listagem  1.
// GET: /Site/Delete/5

        public ActionResult Delete(int id)
        {
            var sites = db.Sites.Find(id);
            return View(sites);
        }
Listagem 1.

Veja que o parâmetro de entrada é um número e esse número é buscado no banco de dados pelo comando “Find”. No final ele retorna a variável “sites” dentro da View.

Com o método, cliquei com o botão direito em cima do nome “Delete” e escolhi a opção “Add View”, conforme mostra a imagem 1.


Imagem 1 – Add View

Outra tela aparece para configurar o tipo de View que desejo. Imagem 2.


Imagem 2 – Configurando a View

Note que a “View name” chamada “Delete” e a “Model class” é a do “Site” e o “template” é o “Delete”. Depois disso, cliquei no botão Add.

Isso faz com que uma página Delete.cshtml seja criada para confirmação e deleção dos dados. A página foi criada dentro da pasta Site. Listagem 2.

Listagem 2 – Confirmação de Delete.
@ model MVCSAC.Models.Site

@{
    ViewBag.Title = "Delete";
}

< h2 >Delete< / h2 >

< h3 >Are you sure you want to delete this?< / h3 >
< fieldset >
    < legend >Site< / legend >

    < div class="display-label" >
         @ Html.DisplayNameFor(model => model.NOSite)
   
    < div class="display-field" >
        @ Html.DisplayFor(model => model.NOSite)
   

    < div class="display-label" >
         @ Html.DisplayNameFor(model => model.SITSite )
   
    < div class="display-field" >
        @ Html.DisplayFor(model => model.SITSite)
   
@ using ( Html.BeginForm()) {
   

        < input type="submit" value="Delete" / > |
        @ Html.ActionLink("Back to List", "Index")
   

}

A página gerada possui os dados e um botão “submit”. Imagem 3.



Imagem 3 – Confirmação de Delete.

Para que o botão funcione perfeitamente, tenho que gerar outro método dentro da classe “SiteController.cs” que pode ser acessado via “http”. 

O método é simples, mas existem algumas particularidades. Listagem 3.

Listagem 3 – Criando método para o botão.
[HttpPost]
        public ActionResult Delete(int id, Site site)
        {
            var sites = db.Sites.Find(id);
            db.Entry(sites).State = System.Data.EntityState.Deleted;
            db.SaveChanges();

            return RedirectToAction("Index");
        }

Este método habilita o clique no botão “submit” da página de confirmação de “delete”. Quero dizer que no clique do botão, este método será acionado. Note os parâmetros de entrada, um id e a classe com get e set.

Antes do método existe o parâmetro “HttpPost”, isso indica que o método é acionado ao clique de algum botão.

Dentro do método a busca é feita pelo id, depois o “status” da entidade é mudada para “Deleted” e na outra linha eu salvo as mudanças. O retorno do método tem que chamar outro método, escolhi o “Index”.

Depois de clicar no botão, o site retorna para a página principal. Imagem 4.



Imagem 4 – Retorna para o método principal.

Pronto, a parte do “delete” está pronta. No geral é bem simples, mas com particularidades. Fico por aqui e qualquer dúvida pode entrar em contato pelo site pessoal www.mauriciojunior.org



Sign up to our newsletter

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.

Top