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:


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