Archiv für den Monat August 2011

MVC 3 und Remote Validation Attribute


wie bereits in einem anderen Post von mir “versprochen” noch eine Anleitung dazu wie man Remote Validation unter MVC 3 nutzt. Remote Validation bedeutet das vom JavaScript auf der Webseite bei der Eingabe eine Controllermethode aufgerufen wird, welche den Inhalt auf Richtigkeit prüft. Das könnte wie in meinem Falle z.B. sein ob der Nutzer bereits existiert wenn man sich neu auf einer Webseite registrieren möchte.

image

Wir befinden uns im  passenden Model und betrachten hier einfach ein Property, was bereits mehrere Attribute besitzt. Der Erste Parameter im Remote Attribute ist der Methodenname der aufgerufen werden soll und der zweite ist der Controllername in dem sich die Methode befindet, dies sind die beiden wichtigsten Parameter, mit den restlichen Parametern kann wie immer die Fehlermeldung angepasst werden.

Es ist auch noch möglich das die Remote Validation von einem weiteren Feld abhängig ist dies kann mit der Eigenschaft “AdditionalFields” im Remote Attribute mit angegeben werden und unsere Methode wird dann mit zwei Strings statt einem aufgerufen.

Die zugehörige Methode wird dann im passenden Controller definiert und erhält als Übergabeparameter unseren Eingabewert und als Rückgabewert wird Json verwendet, hier ist der zweite Parameter “JsonRequestBehavior.AllowGet” wichtig, ohne diesen Parameter wird unsere Methode nicht aufgerufen.

image

Das war alles was für Remote Validation benötigt wird.

Damit Remote Validation auch funktioniert muss in der web.config auch JavaScript aktiviert sein.

image

Hinweis: Wenn entweder in der web.config oder beim Nutzer im Browser JavaScript ausgeschalten ist, dann funktioniert auch unser Remote Validation Attribute nicht mehr. Bei diesem Attribut gibt es auch keine Serverseitige Validierung die dann automatisch einspringt, d.h. man muss immer noch im Controller selbst eine Serverseitige Validierung mit einbauen!

Advertisements

MVC Helper von Microsoft (Captcha)


Ich habe gestern eine sehr Interessante Seite direkt von MS gefunden, in der es eine Sehr gute Einführung in ASP.NET MVC gibt und wie sollte es anders sein findet man diese natürlich direkt auf ASP.NET:

http://www.asp.net/mvc/tutorials

nachdem ich mich noch einmal mit den Grundlagen auseinander gesetzt habe, war da auch noch ein Abschnitt über Razor und Helper Klassen:

http://www.asp.net/webmatrix/tutorials/asp-net-web-pages-api-reference

Leider sind diese bei einem ASP.NET MVC Projekt nicht standardmäßig eingebunden, so dass man erst einmal die Referenz auf die “Microsoft.Web.Helpers” hinzufügen muss über den “Library Package Manager”

image

hier muss dann auf der Konsole nur noch:

PM> Install-Package microsoft-web-helpers

eingegeben werden und schon wird die passende Dll dem Projekt hinzugefügt.

(Quelle: http://midnightprogrammer.net/post/Working-With-Microsoft-Web-Helpers-In-MVC-3-Razor-View.aspx)

Jetzt kann man auf die Helper von Microsoft zugreifen. Das kann z.B. folgendermaßen aussehen:

image

Der passende Code mit den Helper Aufrufen sieht dann so aus:

image

Auch das Einbinden eines Captchas ist sehr einfach, hier muss nur noch darauf geachtet werden das man sich vorher zwei Schlüssel (private und public) erstellen lässt unter:

https://www.google.com/recaptcha

Ich habe die beiden Schlüssel dann in der Web.Config bei mir eingebunden und Initialisiere diese dann in der Global.asax im Application_Start(), wenn man dies direkt hier macht, dann braucht man beim Erstellen und Abfragen nicht jedes mal den Schlüssel als Parameter mit übergeben.

image

Zum Rendern des Captchas muss nur noch auf der Webseite folgender Code angegeben werden mit “ReCaptcha.GetHtml()” wird das Catpcha erstellt.

image

Gerendertes Catpcha auf der Webseite:

image

und wenn man dann im Controller prüfen will ob die Eingabe auch korrekt war geht das genauso einfach mit, “ReCaptcha.Validate()”:

image

So einfach kann die Einbindung eines Captchas unter ASP.NET MVC sein.

RegularExpression Attribut–Email


Wenn man unter ASP.NET MVC 3 zur Validierung eines Eintrages das RegularExpression Attribut verwendet, muss darauf geachtet werden das auch der Reguläre Ausdruck der verwendet wird auch von JavaScript Interpretiert werden kann. Denn wenn man hier einen ungültigen Regulären Ausdruck verwendet, kann es sein das auch z.B. ein Remote Attribute was auf dem Property gesetzt wurde nicht mehr funktioniert und nicht mehr aufgerufen wird.

Folgender Regex Ausdruck für eine Gültige Mailadresse geht nicht im RegularExpression Attribut:

@“^(?(„“)(„“.+?““@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&’\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$“

Aber dafür geht der Folgende Regex Ausdruck:

@“^([\w\!\#$\%\&\’\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\’\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-zA-Z0-9]{1}[a-zA-Z0-9\-]{0,62}[a-zA-Z0-9]{1})|[a-zA-Z])\.)+[a-zA-Z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$“

Quelle: http://tdryan.blogspot.com/2010/12/aspnet-mvc-3-custom-validation.html