<= Tilbake

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:

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