Validering af bruger-input i.NET WebForms Valideringsmuligheder i ASP.NET Fordele og ulemper Server-side vs. client-side Formatering vs. Validering
UML diagram over klasser til validering i C#
Eksempler på Regular Expressions Dansk telefonummer: [1-9]\d{3} \d{4} Et tal mellem 1 og 9, så 3 tal mere, et mellemrum og så 4 tal. Fornavn, evt. mellemnavne og et efternavn: \w+( \w+)+ 1-n bogstaver, så gentaget 1-n gange: et mellemrum og 1-n bogstaver. \w+ 1-n bogstaver ([-+.]\w+)* 0-n gange: enten -+ eller. og så \w+ 1-n bogstaver ([-.]\w+)* 0-n gange: - eller. og så 1-n bogstaver \. et punktum (escape karakter foran) \w+ 1-n bogstaver ([-.]\w+)* 0-n gange: - eller. og så 1-n bogstaver
protected void PrimeValidate(object source, ServerValidateEventArgs args) { int indtastet = int.Parse(args.Value); bool isPrime = true; for (int i = 2; i < indtastet; ++i) { if (indtastet % i == 0) {isPrime = false; i = indtastet;}; } args.IsValid = isPrime; } function validatePrime(oSrc, args){ var indtastet = parseInt(args.Value); var isPrime = true; for (i = 2; i < indtastet; ++i) {if (indtastet % i == 0) {isPrime = false; i = indtastet;};} args.IsValid = isPrime; } string script; script = ""; script += " "; script += "function validatePrime(oSrc, args){"; … RegisterClientScriptBlock("validatePrime", script); CustomValidator til Primtal RegisterStartupScript("validatePrime", script); eller C# JS
ValidationSummary i WebForm
function kun_tal(key) { // Hvis en af betingelserne er opfyldt, så returneres - ellers ikke. // Accepterer følgende tegn: '0' - '9', '0' - '9’ (numerisk tastatur), // [backspace], [delete], [tab], [pil venstre], [pil højre], [f5], [RETURN] return ( (event.keyCode >= 48 && event.keyCode <= 57) || // ’0’ – ’9’ (event.keyCode >= 96 && event.keyCode <= 105) || // ’0’ – ’9’ (numerisk tastatur) (event.keyCode == 8) || // [backspace] (event.keyCode == 46) || // [delete] (event.keyCode == 9) || // [tab] (event.keyCode == 39) || // [pil venstre] (event.keyCode == 37) || // [pil højre] (event.keyCode == 116) || // [f5] (event.keyCode == 13) || // [RETURN] (Carriage Return) (event.keyCode == 10)// [RETURN] (Linefeed) ); }; Styring af input Clientside JS
+- Clientside validering Hurtigt – validering sker nu! Mulighed for popup- vinduer, som er langt mere tydelige for brugerne. Ikke så sikkert, da koden ligger i tekst i HTML- siden. Forskellige scripting- sprog. Serverside validering Sikkert udført på serveren. Flere muligheder for sprog. Langsomt - alle data og view-states skal omkring serveren, og tilbage igen med en ny side. Clientside vs. Serverside
Validering vs. Formatering Hvor paranoid man er Hvor usikker serveren er Hvor mange andre der har adgang til den samme database Kombination af det hele?
protected string Format(string tekst) { char space = ' '; char[] sep = new char[1]; sep[0] = space; string[] ord = tekst.Split(sep); string returTekst = ""; string tmp = ""; Label2.Text = ""; Label2.Text += ord.Length.ToString() + " "; for(int i = 0; i < ord.Length; i++) // Et ord ad gangen { tmp = ord[i].ToLower(); // Sæt det hele til små bogstaver tmp = tmp.Substring(0,1).ToUpper() + tmp.Substring(1, tmp.Length -1); // Til stort if(tmp.Substring(0,2) == "Mc") // Efter “Mc” til stort – Skotske navne {tmp = tmp.Substring(0,2) + tmp.Substring(2,1).ToUpper() + tmp.Substring(3, tmp.Length -3);}; if(tmp.Substring(0,3) == "Mac") // Efter “Mac” til stort – Skotske navne {tmp = tmp.Substring(0,3) + tmp.Substring(3,1).ToUpper() + tmp.Substring(4, tmp.Length -4);}; // Yderligere kan så ændres “Von” til “von”, “De” til “de” o.s.v. returTekst += tmp + " "; } return returTekst.Trim(); } Formatering af indtastet navn eller adresse. C#