ASP .NET MVC 5 - Como obter informações de um banco de dados usando AngularJS - I |
Neste artigo eu vou mostrar como obter dados de um banco de dados usando AngularJS em uma aplicação ASP .NET MVC 5. |
Neste artigo eu vou usar um banco de dados SQL Server e mostrar como obter dados de um banco de dados SQL Server usando AngularJS em uma aplicação ASP .NET MVC 5.
Definindo o banco de dados e a tabela
Vou usar a tabela Produtos do banco de dados Cadastro.mdf. A estrutura da tabela Produtos é dada a seguir:
A seguir temos os scripts para gerar o banco de dados Cadastro.mdf :
USE [master]
GO
CREATE DATABASE [Cadastro] ON PRIMARY
( NAME = N'Cadastro', FILENAME = N'c:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Cadastro.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'Cadastro_log', FILENAME = N'c:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Cadastro_log.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
|
E a tabela Produtos:
USE [Cadastro]
GO
CREATE TABLE [dbo].[Produtos](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Nome] [nvarchar](50) NULL,
[Descricao] [nvarchar](150) NULL,
[Preco] [decimal](18, 0) NULL,
[Estoque] [int] NULL,
CONSTRAINT [PK_Produtos] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
|
Recursos usados:
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no VS Community
Abra o VS Community 2015 e clique em New Project;
Selecione a linguagem Visual C# e o template ASP .NET Web Application;
Informe o nome Mvc_AngularDB ou outro de sua preferência e clique no botão OK;
A seguir selecione o template MVC e clique no botão OK:
Para obter a AngularJS podemos usar o Nuget para incluir as referências às biblioteca AngularJS.
Isso é feito no menu TOOLS e em Nuget Package Manager e selecione Manage Nuget Package for Solutions.
Na janela do assistente selecione a guia Browse e informe AngularJS para localizar o pacote;
Selecione o pacote AngularJS.Core e clique no botão Install para instalar a biblioteca no projeto:
Podemos também usar usar a distribuição CDN que é referenciada diretamente na view.
A url da distribuição CDN pode ser obtida no site https://angularjs.org/ e é a seguinte : https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js
Dessa forma temos a estrutura do nosso projeto criado e pronto para que possamos fazer os ajustes necessários e configurar o ambiente.
Criando um modelo de entidades com o Entity Framework
Vamos agora criar um modelo de entidades usando o Entity Framework.
Clique com o botão direito do mouse sobre a pasta Models e a seguir em Add -> New Item;
Selecione a guia Data e clique em ADO .NET Entity Data Model, informe o nome Cadastro e clique no botão Add;
A seguir selecione a opção EF Designer from database e clique em Next>:
Para selecionar o banco de dados Cadastro.mdf que criamos clique em
New Connection;
Selecione o servidor SQL Server e o banco de dados e clique no botão OK;
Confirme a conexão criada e salve a string de conexão no arquivo web.config clicando em Next>:
Selecione a tabela Produtos e marque as opções conforme a figura abaixo clicando em Finish:
Ao final teremos o nosso modelo de entidades mapeado para as tabelas gerado conforme a figura a seguir:
Criando o Controller DBController
Clique com o botão direito do mouse sobre a pasta Controllers e a seguir em Add -> Controller;
Selecione o scaffold - MVC 5 Controller - Empty e clique em Add;
Informe o nome DBController e clique em OK;
Agora inclua o código abaixo neste Controller:
using System.Linq;
using System.Web.Mvc;
using Mvc_AngularDB.Models;
namespace Mvc_AngularDB.Controllers
{
public class DBController : Controller
{
// GET: DB
public ActionResult Index()
{
return View();
}
public JsonResult GetProduto()
{
Produto _produto = null;
//define uma instância do contexto
using (CadastroEntities dc = new CadastroEntities())
{
_produto = dc.Produtos.OrderByDescending(p=> p.Id).Take(1).FirstOrDefault();
}
return new JsonResult { Data = _produto, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
}
}
|
Definimos uma Action chamada GetProduto() que irá retornar o último produto no formato JSON.
Criando o controlador AngularJS na pasta Scripts
Vamos criar uma subpasta chamada Controllers na pasta Scripts para organizar o nosso código e nesta pasta vamos criar o controller AngularJS do nosso projeto.
Clique com o botão direito do mouse sobre a pasta Scripts e a seguir clique em Add -> New Folder e informe o nome Controllers.
Agora clique com o botão direito do mouse sobre a pasta Controllers e a seguir em Add -> New Item;
Selecione o template JavaScript File e informe o nome AngularDBController.js e clique no botão Add;
Digite o código abaixo neste arquivo:
angular.module('MacApp')
.controller('DadosProdutoController', function ($scope, ProdutoService) {
$scope.Produto = null;
ProdutoService.GetProduto().then(function (d) {
$scope.Produto = d.data; // Successo
}, function () {
alert('Ocorreu um erro'); // Falhou
});
})
.factory('ProdutoService', function ($http) {
var fac = {};
fac.GetProduto = function () {
return $http.get('/DB/GetProduto');
}
return fac;
});
|
Note que eu criei um modulo para a aplicação MacApp e registrei o controlador DadosProdutoController para este modulo.
O serviço $http é um serviço Angularjs
para leitura de dados a partir de servidores remotos. Esse suporte permite
realizar requisições a um ou mais servidores o que é essencial para um
aplicativo do lado do cliente como o nosso que precisa obter e definir dados de
um backend.
O serviço $http ajuda a facilitar a comunicação com servidores remotos
via HTTP o objeto XMLHttpRequest ou através de JSONP.
Agora precisamos criar o arquivo que define nossa aplicação MacApp.
Agora clique com o botão direito do mouse sobre a pasta Scripts e a seguir em Add -> New Item;
Selecione o template JavaScript File e informe o nome Macoratti.js e clique no botão Add;
Digite o código abaixo neste arquivo:
(function () {
//Cria um Module
var app = angular.module('MacApp', []);
//Cria um Controller e registra no Module
app.controller('HomeController', function ($scope) {
// $scope é usado para compartilhar dados entre a view e o controller
$scope.Mensagem = "Configurando o AngularJS com ASP .NET MVC 5";
});
})();
|
Agora temos a aplicação MacApp e dois controladores registrados : HomeController e DadosProdutoController.
Nota:Não esqueça de fazer a configuração da aplicação para referenciar a biblioteca Angular e o scripts conforme foi mostrado no artigo: ASP .NET MVC 5 - Configurando o ambiente para usar AngularJS
Criando a Action e a View para exibir os dados
Abra o arquivo HomeController.cs na pasta Controllers e defina a Action DadosProduto() abaixo neste controlador:
public ActionResult DadosProduto()
{
return View();
}
|
Finalmente clique com o botão direito do mouse no interior desta Action e a seguir clique em Add View;
Selecione o Template Empty e clique em Add;
Digite o código a seguir para a view DadosProduto.cshtml criada na pasta Home:
@{
ViewBag.Title = "DadosProduto";
}
<h2>Dados do Produto : </h2>
<div ng-controller="DadosProdutoController">
<div style="font-weight:bold">
Produto
</div>
<table>
<tr>
<td>Código do Produto :</td>
<td>{{Produto.Id}}</td>
</tr>
<tr>
<td>Nome do Produto : </td>
<td>{{Produto.Nome}}</td>
</tr>
<tr>
<td>Descrição do Produto :</td>
<td>{{Produto.Descricao}}</td>
</tr>
<tr>
<td>Preço do Produto :</td>
<td>{{Produto.Preco}}</td>
</tr>
<tr>
<td>Estoque :</td>
<td>{{Produto.Estoque}}</td>
</tr>
</table>
</div>
|
Na view definimos o controlador usado via diretiva ng-controller="DadosProdutoController" e obtemos os dado usando o databinding via expressões {{}} obtendo os dados do objeto $scope - Produto.
Executando o projeto iremos obter:
Pegue o projeto completo aqui : Mvc_AngularDB.zip (sem as referências)
(Disse Jesus) "Eu sou a videira, vós as
varas; quem está em mim, e eu nele, esse dá muito fruto; porque sem mim nada
podeis fazer.
Se alguém não estiver em mim, será lançado fora, como a vara, e secará; e os
colhem e lançam no fogo, e ardem."
João 15:5,6
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 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: