Na classe parcial Medico utilizamos o atributo MetadataType para informar
qual o tipo da classe
que possui os metadados que serão utilizados, e é com esses atributos que informamos que a classe MedicoMetadado deverá ser utilizada.
A classe MedicoMetadado possui as mesmas propriedades da classe Medico,
afinal é nela que colocaremos as validações das propriedades. Em cada propriedade, utilizamos os atributos necessários para fazer a validação que desejamos.
Em todos os exemplos estamos utilizando só dois atributos, o atributo
Required define que aquela propriedade é obrigatória, e já definimos nele a mensagem de erro que será apresentada caso a propriedade não esteja informada. Além da validação de campo obrigatório, podemos utilizar o atributo StringLenght
para validar o tamanho dos textos informados, e caso o tamanho ultrapasse o limite informado, definimos também a mensagem de erro que será apresentada.
Listagem 4.10 - Definição dos Metadados do model Medico:
namespace CadeMeuMedico.Models
{
73
4.7. Adicionando atributos de validação nos modelos
Casa do Código
[MetadataType(typeof(MedicoMetadado))]
public partial class Medico
{
}
public class MedicoMetadado
{
[Required(ErrorMessage="Obrigatório informar o CRM")]
[StringLength(30, ErrorMessage="O CRM deve possuir no
máximo 30 caracteres")]
public string CRM { get; set; }
[Required(ErrorMessage = "Obrigatório informar o Nome")]
[StringLength(80, ErrorMessage = "O Nome deve possuir no máximo
80 caracteres")]
public string Nome { get; set; }
[Required(ErrorMessage = "Obrigatório informar o Endereço")]
[StringLength(100, ErrorMessage = "O Endereço deve possuir no
máximo 100 caracteres")]
public string Endereco { get; set; }
[Required(ErrorMessage = "Obrigatório informar o Bairro")]
[StringLength(60, ErrorMessage = "O Bairro deve possuir
no máximo 60 caracteres")]
public string Bairro { get; set; }
[Required(ErrorMessage = "Obrigatório informar o E-mail")]
[StringLength(100, ErrorMessage = "O E-mail deve possuir no
máximo 100 caracteres")]
public string Email { get; set; }
[Required(ErrorMessage = "Obrigatório informar se Atende
por Convênio")]
public bool AtendePorConvenio { get; set; }
[Required(ErrorMessage = "Obrigatório informar se Tem Clínica")]
public bool TemClinica { get; set; }
[StringLength(80, ErrorMessage = "O Website deve possuir no
74
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
máximo 80 caracteres")]
public string WebsiteBlog { get; set; }
[Required(ErrorMessage = "Obrigatório informar a Cidade")]
public int IDCidade { get; set; }
[Required(ErrorMessage = "Obrigatório informar a
Especialidade")]
public int IDEspecialidade { get; set; }
}
}
Vimos até aqui as possíveis formas de criação dos modelos da aplicação, além
de adicionar atributos de validação as propriedades do modelo. Mas nossa aplicação não possui só o model Medico ainda temos Usuários, Cidades e Especialidades.
Repita o processo apresentado e faça as classes de metadados referente a cada modelo da aplicação.
Lembre-se que, caso seja necessário, os códigos fontes completos da aplicação
estão no github:
http://bit.ly/mvc-livrocodigofonte
Mas é um excelente exercício você mesmo criar todas as entidades.
75
Capítulo 5
Controllers: Adicionando
comportamento a nossa aplicação
O universo de desenvolvimento de software disponibiliza diferentes abordagens para a construção das aplicações (sobre o que já discutimos um pouco no primeiro capí-
tulo deste livro). Tais abordagens podem variar em função de diversos aspectos, sendo os dois principais: o paradigma funcional da linguagem (orientada a objetos, funcional, procedural etc.) e as metodologias e ferramentas associadas para o trabalho conjunto com as linguagens e IDEs.
Neste contexto, podemos concluir que, evidentemente, existem diferentes for-
mas para que se possa implementar os comportamentos desejados para as aplicações.
Como você deve se lembrar, no modelo de programação proposto pelo ASP.NET
Web Forms, por exemplo, tais comportamentos estavam diretamente ligados (via
code-behind) a componentes de servidor que eram predefinidos pela Microsoft. Tal modelo é conhecido por muitos como
programação orientada a eventos (herança
de plataformas de desenvolvimento como Delphi, VB, dentre outras).
5.1. Vamos controlar a aplicação?
Casa do Código
Quando falamos em ASP.NET MVC, referimo-nos necessariamente à imple-
mentação de comportamentos para as aplicações através de elementos do framework conhecidos como controllers (em português brasileiro, Controladores). Evidente que o nome controller não foi atribuído por acaso. Seu nome resume de forma sintética, porém perfeita, sua atuação dentro do padrão arquitetural MVC.
Neste capítulo discutiremos de forma mais aprofundada a utilização dos con-
trollers no contexto de aplicações construídas através do ASP.NET MVC. Ao final, deverão estar claros para você os seguintes aspectos relacionados a estes elementos: