ASP 
.NET MVC 5 - Cadastro de Produtos (com imagem) - III
    
    
    ![]()  | 
    Neste tutorial vou mostrar como implementar um Cadastro de Produtos com imagem e realizar as operações de manutenção de produtos. | 
				
				![]()  | 
  
Vamos continuar a segunda parte do artigo e implementar a exclusão e a visualização de detalhes dos produtos.
Recursos Usados:
Deletando um produto
Para deletar um produto vamos definir os métodos Action Delete(GET/POST) no controlador ProdutosController:
		      // GET: Produtos/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
		            Produto produto = db.Produtos.Find(id);
            if (produto == null)
            {
                return HttpNotFound();
            }
            ViewBag.Categoria = db.Categorias.Find(produto.CategoriaId).CategoriaNome;
            return View(produto);
        }
		        // POST: Produtos/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Produto produto = db.Produtos.Find(id);
            db.Produtos.Remove(produto);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
		 | 
	
O método Delete(GET) apresenta a view Delete onde o usuário deve confirmar a exclusão do produto selecionado.
Observe que estamos usando o atributo ActionName para a Action DeleteConfirmed() que nos permite especificar um nome de Action diferente do nome do método usado.
Criando a view para deletar um produto
Clique com o botão direito sobre o método Action Delete do controlador ProdutosController e a seguir clique em Add View;
Aceite os valores definidos na janela Add View e clique em Add:
A seguir inclua o código abaixo:
		@model Mvc_Imagem.Models.Produto
		@{
    ViewBag.Title = "Deletar";
}
		<h2>Deletar Produto</h2>
		<h3 class="text-danger">Deseja deletar este produto ?</h3>
		<div class="form-horizontal">
    <div class="form-group">
        @Html.LabelFor(m => m.Nome, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.Nome,
                                      new { @class = "form-control", @disabled = "disabled" })
        </div>
    </div>
		    <div class="form-group">
        @Html.LabelFor(m => m.Descricao, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.Descricao,
                                      new { @class = "form-control", @disabled = "disabled" })
        </div>
    </div>
		    <div class="form-group">
        @Html.LabelFor(m => m.Preco, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.Preco,
                          new { @class = "form-control", @disabled = "disabled" })
        </div>
    </div>
		    <div class="form-group">
        @Html.LabelFor(m => m.Categoria.CategoriaNome, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.CategoriaId, ((String)ViewBag.Categoria),
                          new { @class = "form-control", @disabled = "disabled" })
        </div>
    </div>
		    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <img src="@Model.Imagem" alt="@Model.Nome image" class="img-thumbnail" />
        </div>
    </div>
		    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
		        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Deletar Produto" class="btn btn-danger" />
                @Html.ActionLink("Cancelar", "Index", null, new { @class = "btn btn-warning" })
            </div>
        </div>
    }
</div>
		 | 
	
No código desta View usamos a view model Produto para exibir as informações do produto com sua imagem que desejamos deletar.
Executando o projeto iremos obter:
Ao selecionar um produto e clicar no link Deletar veremos a view Delete exibindo as informações do produto a excluir e solicitando a confirmação do usuário:

Vendo detalhes de um produto
Para ver detalhes de um produto vamos definir o método Action Details(GET) no controlador ProdutosController:
		       // GET: Produtos/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Produto produto = db.Produtos.Find(id);
            if (produto == null)
            {
                return HttpNotFound();
            }
		            ViewBag.Categoria = db.Categorias.Find(produto.CategoriaId).CategoriaNome;
            return View(produto);
        }
		 | 
	
A seguir crie a view Details.cshtml com o seguinte código :
		@model Mvc_Imagem.Models.Produto
		@{
    ViewBag.Title = "Detalhes";
}
		<h2>Detalhes do Produto</h2>
<hr />
<div>
    <div class="form-horizontal">
        <div class="form-group">
            @Html.LabelFor(m => m.Nome, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(m => m.Nome,
                                   new { @class = "form-control", @disabled = "disabled" })
            </div>
        </div>
		        <div class="form-group">
            @Html.LabelFor(m => m.Preco, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(m => m.Preco,
                          new { @class = "form-control", @disabled = "disabled" })
            </div>
        </div>
		        <div class="form-group">
            @Html.LabelFor(m => m.Categoria.CategoriaNome, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(m => m.CategoriaId, ((String)ViewBag.Categoria),
                           new { @class = "form-control", @disabled = "disabled" })
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <img src="@Model.Imagem" alt="@Model.Nome image" class="img-thumbnail" />
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                @Html.ActionLink("Retornar", "Index", null, new { @class = "btn btn-primary" })
            </div>
        </div>
    </div>
</div
		 | 
	
Executando o projeto e clicando no link Detalhes teremos o seguinte resultado:
![]()  | 
	
Espiando o nosso banco de dados Estudo.mdf veremos as informações persistidas na tabela Produtos via Entity Framework conforme mostra a figura:
![]()  | 
	
Note que as imagens estão armazenadas na pasta ProdutoImagens e somente o caminho é armazenado no banco de dados.
Pegue o 
código completo do projeto neste link :  
Mvc_Imagem.zip (sem as referências)
| 
    
    Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! 
 Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?  | 
  
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a 
Objetos com VB .NET
![]()
ASP .NET MVC 4 - Criando sua primeira aplicação MVC - Macoratti
ASP .NET MVC - Criando uma aplicação básica - CRUD - Macoratti
ASP .NET MVC - Criando um simples formulário de login - Macoratti
ASP .NET MVC - Crud com Entity Framework usando ... - Macoratti
ASP .NET MVC 5 -Tratando imagens com o Helper ... - Macoratti.net
ASP .NET MVC 5 - Catálogo de Clientes com Foto e ... - Macoratti.net
ASP .NET - Exibindo imagens de um banco de dados - Macoratti.net