Acessar dados do modelo por meio de um controlador
por Scott Hanselman
Este é um tutorial para iniciantes que apresenta as noções básicas de ASP.NET MVC. Você criará um aplicativo Web simples que lê e grava de um banco de dados. Visite o centro de aprendizagem do ASP.NET MVC para encontrar outros tutoriais e exemplos do MVC ASP.NET.
Nesta seção, vamos criar uma nova classe MoviesController e escrever algum código que recupere nossos dados de Filme e os exiba de volta para o navegador usando um modelo de Exibição.
Clique com o botão direito do mouse na pasta Controladores e crie um novo MoviesController.
Isso criará um novo arquivo "MoviesController.cs" sob nossa pasta \Controllers em nosso projeto. Vamos atualizar o MovieController para recuperar a lista de filmes do nosso banco de dados recém-populado.
using System;
using System.Linq;
using System.Web.Mvc;
using Movies.Models;
namespace Movies.Controllers
{
public class MoviesController : Controller
{
MoviesEntities db = new MoviesEntities();
public ActionResult Index()
{
var movies = from m in db.Movies
where m.ReleaseDate > new DateTime(1984, 6, 1)
select m;
return View(movies.ToList());
}
}
}
Estamos executando uma consulta LINQ para que só recuperemos filmes lançados após o verão de 1984. Precisaremos de um modelo de Exibição para renderizar essa lista de filmes novamente, portanto, clique com o botão direito do mouse no método e selecione Adicionar Modo de Exibição para criá-la.
Na caixa de diálogo Adicionar Modo de Exibição, indicaremos que estamos passando um List<Movies.Models.Movie> para nosso modelo de Exibição. Ao contrário das vezes anteriores em que usamos a caixa de diálogo Adicionar Exibição e optamos por criar um modelo "Vazio", desta vez indicaremos que queremos que o Visual Studio "faça scaffold" automaticamente de um modelo de exibição para nós com algum conteúdo padrão. Faremos isso selecionando o item "Lista" no menu suspenso "Exibir conteúdo".
Lembre-se de que, quando você tiver criado uma nova classe, precisará compilar seu aplicativo para que ele apareça na caixa de diálogo Adicionar Exibição.
Clique em adicionar e o sistema gerará automaticamente o código para um Modo de Exibição para nós que exibe nossa lista de filmes. Este é um bom momento para alterar o <título h2> para algo como "My Movie List" como fizemos anteriormente com o modo de exibição Olá, Mundo.
Execute seu aplicativo e visite /Movies na barra de endereços. Agora recuperamos dados do banco de dados usando uma consulta básica dentro do Controlador e retornamos os dados para uma Exibição que sabe sobre Filmes. Esse Modo de Exibição, em seguida, percorre a lista de Filmes e cria uma tabela de dados para nós.
Não implementaremos a funcionalidade Editar, Detalhes e Excluir com este aplicativo. Portanto, não precisamos dos links padrão que o modelo de scaffold criou para nós. Abra o arquivo /Movies/Index.aspx e remova-os.
Aqui está o código-fonte para a aparência do nosso modelo de Exibição atualizado depois que fizermos estas alterações:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Movies.Models.Movie>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Movie List
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>My Movie List</h2>
<table>
<tr>
<th>Title</th>
<th>ReleaseDate</th>
<th>Genre</th>
<th>Rating</th>
<th>Price</th>
</tr>
<% foreach (var item in Model)
{ %>
<tr>
<td><%: item.Title %></td>
<td><%: String.Format("{0:g}", item.ReleaseDate) %></td>
<td><%: item.Genre %></td>
<td><%: item.Rating %></td>
<td><%: String.Format("{0:F}", item.Price) %></td>
</tr>
<% } %>
</table>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
</asp:Content>
Ele está criando links que não precisaremos, portanto, vamos excluí-los para este exemplo. No entanto, manteremos nosso link Criar Novo, pois isso é o próximo! Aqui está a aparência do nosso aplicativo com essa coluna removida.
Agora temos uma listagem simples de nossos dados de filmes. No entanto, se clicarmos no link "Criar Novo", receberemos um erro, pois ele não está conectado! Vamos implementar um método Create Action e permitir que um usuário insira novos filmes em nosso banco de dados.