VALIDAÇÃO DE DADOS COM O PADRÃO MVC

Documentos relacionados
JAVASCRIPT. Desenvolvimento Web I

PROJETOS EXEMPLO DE ASP.NET MVC

Login. Criar uma pasta Repositories na raiz do projeto. Criar uma classe Funcoes.cs dentro da pasta Repositories.

Many-to-many. Mapear no Context Na classe Context.cs, dentro do método OnModelCreating, adicionar o trecho

Laboratório 3 Controllers

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

Aplicação MVC com Class Library

Bem vindos ao Curso de ASP.NET MVC 3 Razor e C#

Desenvolvimento de Aplicações para Internet

Aula 06 Classe Net.Mail

Introdução à linguagem HTML. Volnys Borges Bernal

Este exercício será parecido com a montagem de um projeto real, onde trabalhamos com vários arquivos XHTML e um único arquivo CSS.

Volnys Bernal. Introdução à linguagem HTML. Introdução à linguagem HTML. Visão geral. Visão geral. Visão geral. Visão geral.

Programação Web Aula 2 XHTML/CSS/XML

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 5 PROF. EMILIO PARMEGIANI

COM222 DESENVOLVIMENTO DE SISTEMAS WEB. Aula 01: HTML e CSS

Disciplina: Desenvolvimento Web Professor: Paulo César Fernandes de Oliveira, BSc, PhD

TECNOLOGIAS WEB. Unidade 3 Linguagem de Marcação e Estilo. Luiz Leão

Manual do Usuário. Versão 1.0. Página 1 de 73

Finalidade dos formulários

Gestão Unificada de Recursos Institucionais GURI

Laboratório de Sistemas e Serviços Web

Professor Jefferson Chaves Jefferson de Oliveira Chaves

Aplicativos móveis com HTML5

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Portal de Cotação da FCC S.A.

MOODLE MANUAL DE UTILIZAÇÃO - ALUNO. Elaborado por: Tecnologia da Informação 2019/1 Versão 1.0

Sintax Razor. José Antônio da Cunha

CSS Cascading Style Sheets

14/08/2009. Módulo 4

1) Índice...1 2) Tela de login...2 3) Opção ) Receber ) Ferramentas...4 6) Visualização em Árvore...5 7) Menu contextual...

ASP.NET Web Services. José Antônio da Cunha IFRN

Schaeffler Online. Manual de Operação

MONTANDO UMA CONSULTA COM FILTROS. Vamos criar uma tela que gere uma relação de dados, escolhendo a ordenação e um filtro.

CSS [10] Desenvolvimento e Design de. Websites. Prof.: Ari Oliveira

Criação de uma aplicação Web ASP.NET MVC 4

Aula07 Forms Authentication

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

Manual de Utilização Autorizador Web 3.1

TRIBUNAL REGIONAL ELEITORAL DO TOCANTINS (TRE-TO) STI/CDS SISTEMA DE INFORMAÇÃO DE INTERDITOS E REGISTRO DE ÓBITOS. MANUAL DO USUÁRIO. Versão 1.

O que faz um servidor/navegador web? 14/03/2016 Rômulo da Silva Lima Slid e 2

Aplicações Web MVC. IFRN Instituto Federal de Educação, Ciências e Tecnologias do Rio Grande do Norte.

Gestão Unificada de Recursos Institucionais GURI

Aplicação Web Zend Framework 2 Cliente de Aplicação Asp.Net Web API

Desenvolvimento Web. HTML 5 Parte I. Prof. Vicente Paulo de Camargo

UNIVERSIDADE ESTADUAL PAULISTA JÚLIO DE MESQUITA FILHO. Módulo Solicitante

Desenvolvimento de Aplicações para Internet Aula 5

Programação para web HTML: Formulários

b) Ao longo de todo Tutorial existem setas vermelhas indicando os pontos críticos a serem selecionados.

GOVERNO DO ESTADO DE SÃO PAULO SECRETARIA DE GESTÃO PÚBLICA

HTML & CSS. uma introdução

INTRODUÇÃO AO DESENVOLVIMENTO FRONT-END COM HTML, CSS E JAVASCRIPT

Cotação Web. Compatibilidade. Autenticação

Manual de utilização do Portal Protheus

SGCD 2.0 Sistema Gerenciador de Conteúdo Dinâmico

Curso de HTML aula 4. Sumário. 1 Formulários. 1.1 Construindo formulários com o FORM. 1.2 Método:

Guia do Portal do Fornecedor

Configurar ajustes do e personalize notificações de na ponta de prova da rede de FindIT

TUTORIAL CACOO: Criando mapas mentais. Realização: Secretaria Geral de Educação a Distância da Universidade Federal de São Carlos

Laboratório de Sistemas e Serviços Web

CSS CASCADING STYLE SHEET

TUTORIAL. Tutorial de como compartilhar o Google Agenda Tutorial de como criar um evento na Plataforma EVEN3

Interfaces Pessoa. Laboratório 1. Máquina. HTML, CSS, JS- Introdução

Figura 28: Tela da aplicação Demo

CSS. Cascading Style Sheets Style Sheets

Novos inputs em HTML5

HTML 5 LINGUAGEM DE MARCAÇÃO E ESTILO - CSS - Prof. Rosemary Melo

Guia para o envio das comunicações para o XVII Congresso ALTEC 2017 através da plataforma EasyChair. Cidade do México, março 2017.

Acesso a Plataforma SatVirtual

MANUAL: CADASTRO DE ESCALAS

Manual do Usuário. Universidade Estadual de Roraima. Rua 7 de Setembro, 231, Canarinho. Boa Vista/RR. CEP:

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

SAÚDE CONNECT FATURAMENTO ODONTOLOGIA

Uma regra CSS quando válida para vários seletores, estes podem ser agrupados. Exemplo: h1, h2, h3, h4, h5, h6 { color: #00FF00; }

MANUAL DE INSTRUÇÕES SISTEMA OPERACIONAL MÉTODO QUANTUM 2014

GUIA PARA CONFIGURAÇÃO DE CORREIO ELETRÔNICO

Recursos Complementares (Tabelas e Formulários)

HERANÇA NO BANCO DE DADOS COM ENTITY FRAMEWORK RESUMO

Tutorial de Administração de sites do Portal C3

#Fundamentos de uma página web

Respostas - RESUMO: Questionário CSS. 1) O padrão CSS nasceu para tentar minimizar quais problemas ligados à gestão de conteúdos na web?

Tutorial do acesso ao WEBMAIL da Defensoria Pública de Mato Grosso do Sul

LISTAR MEMORANDOS RECEBIDOS

MANUAL DE UTILIZAÇÃO DO SISTEMA DE CHAMADOS GLPI. Versão do GLPI (atualizado em 31/07/2017)

Programação WEB I DOM (Document Object Manager)

UNIVERSIDADE FEDERAL DE SÃO CARLOS GUIA DE UTILIZAÇÃO SISTEMA DE AUTO ATENDIMENTO AO USUÁRIO SECRETARIA GERAL DE INFORMÁTICA SIN

Informática I. Aula 8. Aula 8-19/09/2007 1

Tutorial de como criar um evento na Plataforma EVEN3

Com a OABRJ Digital você trabalha de forma colaborativa, simples e objetiva, em uma única tela.

Professor Jefferson Chaves Jefferson de Oliveira Chaves

Programação para Internet I

Por Fernando Koyanagi

1. ACESSO AO SISTEMA. Sistema Malote Digital Instruções de Utilização

SIMULADOS & TUTORIAIS

Uploadde arquivos com o método POST

Transcrição:

VALIDAÇÃO DE DADOS COM O PADRÃO MVC Emanuel Braz da Cruz Leonardo Soares Vianna André Lúcio de Oliveira Bruno Lessa RESUMO A validação de dados no padrão MVC consiste de atributos simples e fácil de usar em uma aplicação. Essa validação é aplicada nesse artigo mostrando a simplicidade de seu uso e a facilidade de sua implementação no padrão MVC com a linguagem de programação C Sharp. Palavras chave: Sistemas de Informação, banco de dados, linguagem de programação.

INTRODUÇÃO A implementação de uma aplicação exemplo no presente artigo consiste no projeto da aplicação do artigo com o título Projeto e Implementação de uma aplicação com o Padrão MVC, de modo que esse artigo apresenta somente o que é necessário alterar nos códigos das views e classe para alcançar o exemplo de validação. Essa medida possibilita dedicar o artigo em outros aspectos sem a necessidade de detalhes da aplicação. Validação dos Dados Para evitar que usuário submeta um formulário vazio ou mesmo que dados absurdos possam ser digitados, faz-se necessário critica-los (lembra-se de banco de dados: os dados a serem armazenados, ou processados, deverão ser criticados), antes que os mesmos possam ser submetidos. Em uma aplicação MVC, a validação é feita no próprio escopo do modelo, da classe, de modo que em qualquer ponto em que a classe for usada ou processada os dados deverão ser criticados do mesmo modo e maneira, sem a necessidade de repetir crítica. Os Atributos de Validação O MVC possui validação através de regras contidas em atributos no namespace System.ComponentModel.DataAnnotations. A figura que segue contém o modelo com estes atributos de validação: using System.ComponentModel.DataAnnotations; namespace ConviteConfraValidado.Models public class Convidado [Required(ErrorMessage="Nome é obrigatório")] public string Nome get; set; [Required(ErrorMessage = "Email é obrigatório")] [RegularExpression(".+\\@.+\\..+", ErrorMessage = "Email inválido")] public string Email get; set; [Required(ErrorMessage = "Telefone é obrigatório")] public string Telefone get; set; [Required(ErrorMessage = "Por favor, selecionar uma opção")] public bool? Aceita get; set;

A classe Convidado possui o namespace já citado para que se possa usar no código os atributos de validação. Conforme pode ser lido na mensagem de erro, as críticas dos atributos somente especifica para cada propriedade sua obrigatoriedade e, em adição, para a propriedade E-mail é criticado quanto à sua validade, isto é, se é ou não um e-mail válido. É relevante ressaltar a propriedade Aceita que possui o tipo de dado bool nullable. Caso esta propriedade fosse do tipo de dado bool, ou seja, somente aceitando true ou false, não seria possível saber se o usuário selecionou ou não uma opção, podendo até mesmo ter esquecido de selecionar uma. Com o tipo de dado bool nullable, é possível criticar e na crítica impor uma opção, se true ou false. Desta forma, o usuário, convidado, tem que selecionar uma opção. Verificação de Erros de Validação Ao criticar os dados digitados pelo convidado, os mesmos podem ou não conter erro. Desta forma, é necessário, verificar se é válido ou não o formulário. Caso seja, a aplicação deve apresentar uma view com os agradecimentos e outras informações ao convidado. Caso contrário, é necessário voltar ao formulário digitado e apresentar os erros contidos no momento da digitação. Para checar se há algum erro no modelo, ao digitar no formulário, é suficiente usar a propriedade ModelState.Isvalid na Action do Controller que decide apresentar a view de agradecimentos. Analise a view da Action RespostaForm do request [HttpPost] que, antes de retornar a view Obrigado, primeiramente verifica se está válido o modelo. A figura que segue contém somente esta Action: View antes da modificação: [HttpPost] public ViewResult RespostaForm(Convidado convidado) return View("Obrigado", convidado); View com a verificação de validade do modelo: [HttpPost] public ViewResult RespostaForm(Convidado convidado)

if (ModelState.IsValid) return View("Obrigado", convidado); else return View(); Portanto, se não há erro de validação no modelo, o código manda o MVC interpretar a view Obrigado. Mas se há erro de validação então o MVC chama a view sem parâmetros. No intuito de melhor orientar o usuário (convidado) a entender a digitação quando há erro, o uso do método helper Html.ValidationSummary na view (que apresenta os objetos do formulário a serem digitados) apresenta os erros que ocorreram e que impossibilitaram de enviar o formulário do convidado. O MVC cria uma lista escondida para listar todos os erros que ocorreram no formulário. A listagem contida na figura a seguir contém esta view com este método helper Html. ValidationSummary, logo após ao @using (Html.BeginForm): @model ConviteConfraValidado.Models.Convidado @ Layout = null; <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>resposta do formulário</title> </head> <body> @using (Html.BeginForm()) @Html.ValidationSummary() <p>por favor: </p> <p>nome: @Html.TextBoxFor(x => x.nome) </p> <p>email: @Html.TextBoxFor(x => x.email)</p> <p>telefone: @Html.TextBoxFor(x => x.telefone)</p> <p> Aceita confraternar? @Html.DropDownListFor(x => x.aceita, new[] new SelectListItem() Text = "Sim, estarei presente", Value = bool.truestring, new SelectListItem() Text = "Não, obrigado", Value = bool.falsestring

, "Selecione uma opção") </p> <input type="submit" value="resposta" /> </body> </html> Ao executar a aplicação e nenhum dos objetos contidos no formulário for digitado ou selecionado, tem-se a seguinte tela validada: Ressaltando Elementos (Objetos) Não Validados no Formulário O método HTML helper que cria os elementos ou objetos no formulário (como caixas de texto, drop-down list, área de texto, etc.) possui uma característica que possibilita o MVC apresentar o elemento com erro em uma característica que o difere dos demais elementos que foram validados sem erro. Para individualizar os objetos ou elementos de um formulário, dentre outras finalidades, é necessário criar uma folha de estilo (style sheet), denominado genericamente de CSS style. Um projeto MVC possui a

convenção de que todo conteúdo estático, tal como CSS style sheets, é adicionada em um folder, pertencente ao projeto, denominado de Content. Um projeto implementado com o template Empty não possui este folder, porém os demais templates são criados contendo este folder, incluindo o CSS style no folder. Para cria-lo é necessário clicar com o botão direito do mouse no nome projeto do Solution Explore, adicionar um folder, atribuir o nome de Content e, neste folder, criar um arquivo com o nome de Site (e extensão css). O nome do arquivo também pertence à nomenclatura do MVC. Este arquivo, CSS style sheets, é criado clicando com o botão direito do mouse sobre o folder de nome Content e selecionar a opção Add. Na lista que é apresentada selecionar a opção New Item... Em seguida clicar na opção Style Sheet na lista de opções que é apresentada. É possível também não selecionar a opção New Item e clicar na própria opção Style Sheet que também se encontra disponível na mesma lista que se encontra a opção New Item..., conforme a figura que segue:

Na página que se abre apagar o código que se encontra por default, e digitar o código que segue:.field-validation-error color: #f00;.field-validation-valid display: none;.input-validation-error border: 1px solid #f00; background-color: #fee;.validation-summary-errors font-weight: bold; color: #f00;.validation-summary-valid display: none; Para a aplicação incluir no projeto este arquivo Style Sheet, denominado de Site.css, não é suficiente implementá-lo fisicamente no folder Content. É necessário também referencia-lo (por meio de um lin) na seção head da View que vai usa-lo para ressaltar os objetos (ou elementos) do formulário. A referência a ser adicionada é: <link rel="stylesheet" type="text/css" href="~/content/site.css" /> O arquivo da view RespostaForm.cshtml deverá estar da seguinte forma: @model ConviteConfraValidado.Models.Convidado @ Layout = null; <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <link rel="stylesheet" type="text/css" href="~/content/site.css" /> <title>resposta do convidado</title> </head> <body> @using (Html.BeginForm()) @Html.ValidationSummary() <p>por favor: </p> <p>nome: @Html.TextBoxFor(x => x.nome) </p> <p>email: @Html.TextBoxFor(x => x.email)</p> <p>telefone: @Html.TextBoxFor(x => x.telefone)</p> <p> Aceita confraternar? @Html.DropDownListFor(x => x.aceita, new[]

new SelectListItem() Text = "Sim, estarei presente", Value = bool.truestring, new SelectListItem() Text = "Não, obrigado", Value = bool.falsestring, "Selecione uma opção") </p> <input type="submit" value="resposta" /> </body> </html> No MVC 3 esta referência pode ser feita da seguinte forma: @Href( ~/Content/Site.css ) ou @Url.Content( ~/Content/Site.css ). Ao executar a aplicação é apresentada a seguinte tela com os elementos validados e não validados: Observe que os elementos do formulário não validados encontram-se avermelhados e correspondem à mensagem emitida imediatamente acima destes elementos. Enviando Mensagem Para enviar o e-mail para o organizador da confraternização o MVC possui de dois recursos: o primeiro seria usar a classe de e-mail do framework.net. O segundo consiste em criar e enviar o e-mail usando o método WebMail

helper, embora, esta funcionalidade de enviar e-mail seja mais eficiente em um método action próprio. No entanto, o e-mail deve ser enviado quando ocorrer os agradecimentos pelo atendimento do convite. A seguir encontra-se a view Obrigado adicionada do envio do e-mail: @model ConviteConfraValidado.Models.Convidado @ Layout = null; <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>obrigado</title> </head> <body> @ try WebMail.SmtpServer = "smtp.gmail.com"; WebMail.SmtpPort = 587; WebMail.EnableSsl = true; WebMail.UserName = "bcemanuel@gmail.com"; WebMail.Password = "do remetente"; WebMail.From = "bcemanuel@gmail.com"; WebMail.Send("bcemanuel@gmail.com", "Agradecimento confraternar empresa", Model.Nome + ((Model.Aceita?? false)? "" : " não ") + "aceitou"); catch (Exception excp) @excp.message @:<p></p> @:<b>desculpe-me, mas não é possível o envio do e-mail!!!</b> <div> <h1>muito agradecido, @Model.Nome! </h1> @if (Model.Aceita == true) @:É um prazer termos sua presença. else @:Obrigado por comunicar, sentiremos sua falta. </div> </body> </html> A classe WebMail se encontra no name space System.Web.Helpers, portanto é um método helper, que possibilita o envio de e-mail. O WebMail

fornece subsídios para contruir e enviar mensagens de e-mail usando um Simple Mail Transfer Protocol (SMTP). As propriedades desta classe são: SmtpServer: Nome de um servidor SMTP. SmtPort Número da porta que é usado para acessar o SMTP. Geralmente, são usadas as portas no intervalo de 25 a 587. EnableSsl Propriedade para fornecer segurança na mensagem de e-mail (se o servidor hospedeiro requerer esta opção). UserName Propriedade que contém o nome da conta de quem envia o e-mail. From Contém o endereço de e-mail de quem envia. Geralmente, é o mesmo conteúdo da propriedade UserName. Password Password da conta do servidor SMTP. A classe possui o seguinte método: WebMail.Send("bcemanuel@gmail.com", "Agradecimento confraternar empresa", Model.Nome + ((Model.Aceita?? false)? "" : " não ") + "aceitou"); Onde o primeiro parâmetro é uma string contendo o e-mail de destino; o segundo é o conteúdo da mensagem, a mensagem propriamente dita; e o terceiro, opcional, é quem está enviando o e-mail.

REFERENCIAS 1-. Freeman, Adam e SANDERSON, Steven. Pro ASP.NET MVC 4,Fourth Edition. Editora Apress. 2- BEZERRA, Eduardo Princípios de análise e projeto de sistemas com UML Editor: Campus 8º Reimpressão RJ 2002. 3- ELMASRI, R. e NAVATHE, S. B. Sistemas de Banco de Dados. Editora Pearson Addison Wesley. 4- COUGO, Paulo. Modelagem Conceitual e Projeto de Banco de Dados. Editora Campus. 5- www.tiselvagem.com.br