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.