Acessando seus dados do modelo de um Controller
Neste tutorial, você criará uma nova classe
MoviesController
e escreverá o código que recupera o dado do filme e exibe no navegador utilizando um modelo view. Você precisa executar os tutoriais anteriores antes de prosseguir.
Clique com o botão direito na pasta Controllers e crie um novo controller
MoviesController
. Selecione as seguintes opções:- Nome do controller: MoviesController. (Este é padrão.)
- Template: Controller with read/write actions and views, using Entity Framework.
- Classe model: Movie (MvcMovie.Models).
- Classe de contexto de dados: MovieDBContext (MvcMovie.Models).
- Views Razor (CSHTML). (Padrão)
Clique em Add. Visual Web Developer cria os seguintes arquivos e pastas:
- Um arquivo MoviesController.cs na pasta do projeto Controllers.
- Uma pasta Movies na pasta do projeto Views.
- Create.cshtml, Delete.cshtml, Details.cshtml, Edit.cshtml e Index.cshtml na nova pasta Views/Movies.
A estrutura do mecanismo do ASP.NET MVC 3 cria automaticamente as operações CRUD (create, read, update e delete) nos métodos de ações e view. Você agora tem uma completa e funcional aplicação web que permite que você crie, liste, edite e exclua os dados do filme.
Execute a aplicação e navegue para o controller
Movies
adicionando na URL /Movies na barra de endereços do seu browser. Como o aplicativo tem o redirecionamento padrão (definido no arquivo Global.asax), o navegador invoca a URL http://localhost:xxxx/Movies que é roteada para o método padrão Index do controller Movies
. Em outras palavras, o navegador invoca http://localhost:xxxx/Movies que é efetivamente a mesma coisa que o browser invocar http://localhost:xxxx/Movies/Index. O resultado é uma lista vazia de filmes, porque você ainda não adicionou nenhum.Criando um Filme
Selecione o link Create New. Digite alguns detalhes sobre o filme e então clique no botão Create.
Clicando no botão Create faz com que o form seja enviado para o servidor, onde a informação do filme é salva no banco de dados. Você então será redirecionado para a URL /Movies, onde você pode ver o novo filme criado na lista.
Crie mais algumas entradas de filmes. Tente usar os links Edit, Details e Delete, os quais estão todos funcionando.
Examinando o Código em Geral
Abra o arquivo Controller\MoviesController.cs e examine o método gerado
Index
. Uma parte da classe controller com o método Index é mostrada abaixo:public class MoviesController : Controller { private MovieDBContext db = new MovieDBContext(); // // GET: /Movies/ public ViewResult Index() { return View(db.Movies.ToList()); }
A seguinte linha da classe
MoviesController
instancia um objeto de contexto do banco de dados, como descrito anteriormente. Você pode usar o filme do contexto do banco de dados para consultar, editar e excluir os filmes.private MovieDBContext db = new MovieDBContext();
Anteriormente neste tutorial, você viu como um controller pode passar dados ou objetos para um modelo view usando o objeto ViewBag. O ViewBag é um objeto dinâmico que prove uma conveniente maneira tardia para passar informações para uma view.
ASP.NET MVC também pode fornecer a capacidade para passar dados ou objetos fortemente tipados para uma view. Este tipo forte aproxima a melhor habilidade em tempo de compilação checando o seu código e um IntelliSense mais rico no editor Visual Web Developer. Nós estamos utilizando está aproximação com a classe
Note como o código cria um objeto
ASP.NET MVC também pode fornecer a capacidade para passar dados ou objetos fortemente tipados para uma view. Este tipo forte aproxima a melhor habilidade em tempo de compilação checando o seu código e um IntelliSense mais rico no editor Visual Web Developer. Nós estamos utilizando está aproximação com a classe
MoviesController
e a view Index.cshtml.Note como o código cria um objeto
List
quando ele invoca na View
o método de ação Index
. O código então passa está lista de filmes do controller para a view.public ViewResult Index() { return View(db.Movies.ToList()); }
Pela inclusão @model de uma declaração no topo do arquivo view, você pode espicificar o tipo de objeto que o view espera. Quando você criou o controller movie, o Visual Web Developer automaticamente incluiu a declaração @model no início do arquivo Index.cshtml:
Por causa que o objeto
@model IEnumerable<MvcMovie.Models.Movie>Esta
@model
diretiva permite você acessar a lista de filmes que o controller passa para a view pelo uso de um objeto Model que é fortemente tipado. Por exemplo, no arquivo Index.cshtml, o código percorre a lista através do comando foreach
sobre o objeto fortemente tipado Model.
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.ReleaseDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Genre)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
Por causa que o objeto
Model
é fortemente tipado (como um objeto IEnumerable<Movie>
), cada objeto item
no loop é tipado como um Movie. Entre outros benefícios, isto significa que você tem em tempo de compilação a checagem do código e suporte completo do IntelliSense no editor de código:Trabalhando com SQL Server Compact
Entity Framework Code First detecta que a string de conexão do banco de dados que foi fornecida apontando para o banco de dados Movies que não existe ainda, assim a codificação cria o banco de dados automaticamente. Você pode verificar que ele é criado olhando na pasta App_Data. Se você não viu o arquivo Movies.sdf, clique em no botão Show All Files na barra do Solution Explorer, clique no botão Refresh, e então expanda a pasta App_Data.
Dê um duplo clique em Movies.sdf para abrir o Server Explorer. Então expanda a pasta Tables para exibir as tabelas que foi criada no banco de dados.
Observação: Se aparecer um erro quando você der um duplo clique em Movies.sdf, tenha certeza que você instalou o SQL Server Compact 4.0. Se você instalou uma nova versão agora, reinicie o Visual Web Developer.
Existem duas tabelas, uma para a definição de
Dê um duplo clique na tabela
Dê um duplo clique na tabela
Observe como o schema da tabela
Quando você terminar, feche a conexão. (Se você não fechar a conexão, você poderá receber um erro na próxima vez que executar o seu projeto).
Agora você tem um banco de dados e uma listagem simples para a exibição deste conteúdo. No próximo capítulo, nós iremos examinar o resto da estrutura do código e adicionar um método e uma view
Dê um duplo clique em Movies.sdf para abrir o Server Explorer. Então expanda a pasta Tables para exibir as tabelas que foi criada no banco de dados.
Observação: Se aparecer um erro quando você der um duplo clique em Movies.sdf, tenha certeza que você instalou o SQL Server Compact 4.0. Se você instalou uma nova versão agora, reinicie o Visual Web Developer.
Existem duas tabelas, uma para a definição de
Movie
e a tabela EdmMetadata
. A tabela EdmMetadata
é usada pelo Entity Framework para determinar quando o modelo e o banco de dados não estão sincronizados.Dê um duplo clique na tabela
Movies
e selecione Show Table Data para exibir os dados que você criou.Dê um duplo clique na tabela
Movies
e selecione a opção Edit Table Schema.Observe como o schema da tabela
Movie
mapeia para a classe Movie
que você criou anteriormente. Entity Framework Code First cria automaticamente este schema para você baseado na sua classe Movie
.Quando você terminar, feche a conexão. (Se você não fechar a conexão, você poderá receber um erro na próxima vez que executar o seu projeto).
Agora você tem um banco de dados e uma listagem simples para a exibição deste conteúdo. No próximo capítulo, nós iremos examinar o resto da estrutura do código e adicionar um método e uma view
SearchIndex
que irá buscar o filme no banco de dados.
muito bom
ResponderExcluirPutz.. muito bom seu tutorial! Pena que não tenha dado sequencia! =/
ResponderExcluirObrigado pelo feedback, infelizmente não tenho tido muito tempo de escrever novos tutoriais.
ExcluirCara, ta de Parabens com este Tutorial
ResponderExcluirMuito bom o seu tutorial, esperando pelas próximas postagem.
ResponderExcluirMuito boa as suas explicações meu camarada! Espero que vc tenha mais tempo para dar continuidade no seu tutorial. Grande abraço!!!
ResponderExcluir