Um modelo (Model) notifica suas visões e controladores associados quando há uma mudança em seu estado. Esta notificação permite que as visões produzam saídas atualizadas e que os controladores alterem o conjunto de comandos disponíveis. Uma implementação passiva do MVC monta estas notificações, devido a aplicação não necessitar delas ou a plataforma de software não suportá-las. Geralmente as classes que representam suas entidades e as que te ajudam a armazenar e buscar os dados são chamadas de Modelo (Model), o modelo que tem acesso a toda e qualquer informação sendo essa vinda de um banco de dados ou qualquer outra fonte que você defina.
Criando Modelos
1 – Usando o Template gerado pelo Visual Studio vamos trocar as Viewbags que passam informação entre o controlador e a visão por modelos. Para isto adicione uma classe chamada AboutModel.cs:
2 – Crie três simples propriedades na classe para armazenar os dados para o modelo, lembrando que você pode utilizar algum framework de persistência para gravar os dados em um banco de dados ou outra fonte de dados de acordo como desejar:
3 – Abra o controlador e crie uma instancia do modelo, vamos alimentar o modelo de um modo estático neste primeiro momento, logo após você só precisa passar o modelo para visão:
4 – Para acessar o modelo você precisa declara-lo em sua visão então pode acessar qualquer uma de suas propriedades, abra o arquivo de visão e o modifique de acordo com o código abaixo:
5 – Rode sua aplicação e clique no menu About para ver o funcionamento, você pode notar que a visão utiliza os dados do modelo que são manipulados através do controlador.
Exemplo:
Neste exemplo criamos um modelo básico através de uma classe, alimentamos seus dados manualmente, lembrando que ainda não existe nenhum tipo de persistência para gravar os dados. Este é um simples exemplo do funcionamento do padrão modelo-visão-controlador.
C#
Modelo
AboutModel.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MeuMVC.Models { public class AboutModel { public string Site { get; set; } public String Linguagem { get; set; } public string Mensagem { get; set; } } }
Visão
About.cshtml
@model MeuMVC.Models.AboutModel @{ ViewBag.Title = "Sobre"; } <h2>@Model.Site</h2> <h3>@Model.Linguagem</h3> <p>@Model.Mensagem</p>
Controlador
HomeController.cx
using MeuMVC.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MeuMVC.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult About() { // Cria instancia do modelo AboutModel modelo = new AboutModel(); // Alimenta dados ao modelo modelo.Site = "Desenvolvimento Aberto"; modelo.Linguagem = "ASP.NET MVC- C#"; modelo.Mensagem = "Rê, Você é a página mais linda que o destino escreveu na minha vida."; // adiciona modelo a visão return View(modelo); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } } }