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);
}
Tags : , ,