Legge til feltene
Det første vi må gjøre er å legge til feltene vi ønsker å validere i PersonModel:
public string EmailAddress { get; set; }
public string IdentityNumber { get; set; }
public DateTime? DateOfBirth { get; set; }
Det kan være fristende å bruke int som type for fødselsnummeret, men det er strengt tatt ikke et tall.Hva er forskjellen på "DateTime" og "DateTime?" ?
Typer med ? bak er såkalt nullable typer. Det betyr rett og slett at de har lov til å være null. Typer som ikke er nullable får en default-verdi istedet for null hvis de ikke er satt. Hvis vi ikke setter fødselsdatoen til å være en nullable type og brukeren ikke fyller den ut vil den automatisk få en default-verdi (01.01.0001).
Valideringsattributter
Det finnes mange attributter man kan annotere felter med for å benytte den innebygde valideringen i MVC:
- [Required] - Feltet er obligatorisk
- [Range] - For tall, tallet må være mellom x og y
- [StringLength] - Lengden på input må være mellom x og y
- [RegularExpression] - Input må match et gitt regular expression
- [EmailAddress] - ...
Vi slenger de på i PersonModel:
[EmailAddress]
public string EmailAddress { get; set; }
[StringLength(11, MinimumLength = 11, ErrorMessage = "Fødselsnummer må være 11 siffer")]
[RegularExpression("[0-9]+", ErrorMessage = "Fødselsnummer kan ikke inneholde noe annet enn heltall")]
public string IdentityNumber { get; set; }
public DateTime? DateOfBirth { get; set; }
Siden MVC også benytter datatypen til å validere behøver vi kke gjøre noe med DateOfBirth, med mindre vi vil gjøre den obligatorisk.
For å få testet vår nye validering legger vi til feltene i Index.cshtml:
@Html.LabelFor(m => m.EmailAddress)
@Html.TextBoxFor(m => m.EmailAddress)<br/>
@Html.LabelFor(m => m.DateOfBirth)
@Html.EditorFor(m => m.DateOfBirth)<br/>
@Html.LabelFor(m => m.IdentityNumber)
@Html.EditorFor(m => m.IdentityNumber)<br />
og Show.cshtml:
<p>Personnummer: @Model.IdentityNumber</p>
<p>Fødselsdato: @Model.DateOfBirth</p>
<p>Epost: @Model.EmailAddress</p>
Og bygger på nytt (CTRL + F5).
<= Tilbake