Tag: DataAnnotations
07_Forms, HtmlHelpers, Validações – DataAnnotations
Os Html Helpers permitem:
Permitem a geração de elementos HTML
O Razor view engine já define um conjunto de helpers
Permite criar de forma simples pequenos blocos html tais como:
Criação de elementos de inputs;
Criação de ligações;
Criação de forms;
Existem três tipos de Html Helpers:
HTML Helpers Inline
Built-in HTML Helpers
e HTML Helpers personalizados
@Html.ActionLink(“Novo Aluno”, “Create”)
significa que:
Novo Aluno
Podemos fazer uso do @HTML.TextBox() usando o:
Método loosely typed e não apresenta erros de compilação quando se especifica o nome da propriedade errado,
ou
Método strongly typed que apresenta erro de compilação quando se especifica um nome de propriedade errado e gera o elemento TextBox para a propriedade especificada no modelo, recorrendo a uma expressão lambda
//exemplo: @Html.TextBox("Nome", null, new { @class = "form-control" }) @Html.TextBoxFor(m => m.Nome, new { @class = "form-control" })
o uso do For permite verificar erros em tempo de compilação
//outros exemplos: @Html.LabelFor(model => model.Numero, htmlAttributes: new { @class = "control-label col-md-2" }) @Html.EditorFor(model => model.Numero, new { htmlAttributes = new { @class = "form-control" } }) @Html.HiddenFor(model => model.Id) @Html.DisplayNameFor(model => model.Numero) @Html.DisplayFor(model => model.Numero)
As DataAnnotations é uma forma de adicionar informação contextual a classes ou membros da classe;
Existem três categorias principais:
Validation
Display
Modelling
//exemplo: [StringLength(50,MinimumLength = 3)] //exemplo: [Required(ErrorMessage = "Especifique um nome.")] //exemplo: [StringLength(50,MinimumLength = 3,ErrorMessage ="O nome deve ter no mínimo 3 e maximo de 50 carateres.")] //exemplo: [Range(0, 18, ErrorMessage ="Idade deve estar entre 0 e 18")] //exemplo: [Display(Name = "Endereço Eletrónico")] //exemplo: [DisplayFormat(ApplyFormatInEditMode =true,DataFormatString ="{0:c}")] //exemplo: [ReadOnly(true)] //exemplo: [RegularExpression(@"\d{9}", ErrorMessage = "Nº de Telemovel invalido!")] //exemplo: [StringLength(10, MinimumLength = 5)]
e pelo uso das ValidationMessageFor surgem:
<div class="form-group"> @Html.LabelFor(model => model.Morada, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Morada, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Morada, "", new { @class = "text-danger" }) </div> </div>
A validação do lado do cliente pode ser feita recorrendo a expressões do jQuery
A validação dos dados:
o MVC executa a lógica de validação durante o model binding, através dos métodos métodos UpdateModel e TryUpdateModel de um controlador
//exemplo: Model Binding public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Aluno aluno = db.Alunos.Find(id); if (aluno == null) { return HttpNotFound(); } return View(aluno); }