RSS FeedFeed TwitterTwitter XINGXING
  
Meine Bücher

Verteilte Systeme und Services mit .NET 4.0: Konzepte und Lösungen mit WCF 4.0,
Hanser Fachbuchverlag

Weitere Infos

 

.NET 4 Update,
Microsoft Press

Weitere Infos

 
Weitere Bücher
Meine Artikel

Leichtgewichtige Kommunikation: REST-basierte Services mit dem neuen API aus der ASP.NET-Familie,
windows.developer

Weitere Infos

 

EAI und EDI in der Cloud ,
windows.developer

Weitere Infos

 

Verteilt und doch ein Ganzes: Verteilte Systeme mit AppFabric Applications,
dot.net magazin

Weitere Infos

 

Vorschau auf Neuerungen der kommenden WCF-Version,
dot.net magazin

Weitere Infos

 

Windows Azure Tutorial, Teil 3: Verbindung zwischen Cloud- und lokalen Applikationen,
iX - Magazin für professionelle Informationstechnik

Weitere Infos

 

MVC, die dritte: ASP.NET MVC 3 RC 2,
dot.net magazin

Weitere Infos

 

Leichtgewichtiges O/R-Mapping - Code Only mit Entitiy Framework CTP 5,
dot.net magazin

Weitere Infos

 

Weitere Artikel

Training & Beratung

Gemeinsam mit meinen Kollegen aus dem IT-Visions Netzwerk unterstützte ich durch zielgerichtete Inhouse-Schulungen und Beratung Unternehmen bei der Planung und Umsetzung von großer Software-Systeme.

Mehr lesen

In Kontakt treten

 
Konferenzen

BASTA! on Tour von 4/25/2012 bis 4/27/2012 in Düsseldorf

Meine Talks

Web-Site der Konferenz

 

BASTA! Spring 2012 von 2/27/2012 bis 3/2/2012 in Darmstadt

Meine Talks

Web-Site der Konferenz

 

ADC - Advanced Developers Conference von 10/26/2011 bis 10/27/2011 in Frankental (Deutschland)

Meine Talks

Web-Site der Konferenz

 

Scandev on tour von 10/18/2011 bis 10/18/2011 in Stockholm (Schweden)

Meine Talks

Web-Site der Konferenz

 

BASTA 2011 von 9/26/2011 bis 9/30/2011 in Mainz

Meine Talks

Web-Site der Konferenz

 

Jazoon - International Conference on the modern art of software von 6/21/2011 bis 6/23/2011 in Zürich

Meine Talks

Web-Site der Konferenz

 

Scandinavian Developer Conference 2011 von 4/4/2011 bis 4/5/2011 in Göteborg (Schweden)

Meine Talks

Web-Site der Konferenz

 

SOA-Days von 3/30/2011 bis 3/31/2011 in Bonn

Meine Talks

Web-Site der Konferenz

 
Weitere Konferenzen
von Manfred, 18. February 2011 21:28

Im ersten Teil dieser Artikelserie wurde gezeigt, wie man mit ASP.NET MVC 3 und jQuery clientseitige Validierungslogiken hinzufügen kann. Dazu wurde die Methode $.validator.unobtrusive.adapters.addBool("hamsterfarbe") verwendet, um die zuvor definierte Validierungs-Regel für die Verwendung mit unobstrusive Validation zu aktivieren. "Aktiviert" bedeutet hierbei, dass die HTML5-Validierungsregel hamsterfarbe, die deklarativ für einzelne Elemente definiert wird, durch die gleichnamige jQuery-Validierungsregel implementiert wird. Weichen die Namen der beiden Validierungsregeln voneinander ab, kann eine Überladung dieser Funktion, welche beide Namen entgegennimmt, herangezogen werden. Der Name addBool ist hier etwas irreführend, denn die Methode aktiviert einfach eine Validierungs-Regel, die abgesehen vom Wert und einen Verweis auf das zu validerende Element keine weiteren Parameter entgegennimmt. Warum Sie addBool heißt wird im Zuge des dritten Teils dieser Serie, in der tiefer in die Thematik eingetaucht wird, erläutert.

Neben addBool stehen noch weitere Methoden zum Aktivieren von Validierungs-Regeln zur Verfügung. Beispielsweise wird mit addSingleValue definiert, dass an die zu aktivierende Regel ein bestimmter Parameter übergeben werden soll. Im nachfolgenden Beispiel handelt es sich dabei um den Parameter casesensitive.

$.validator.addMethod(
    "hamsterfarbe",
    function (value, element, isCaseSensitive) {

        if (isCaseSensitive == "false") {
            value = value.toLowerCase();
        }
            
        if ($("#Name").val() == "Krümel" && value != "gold") return false;

        return true;
    });

$.validator.unobtrusive.adapters.addSingleVal("hamsterfarbe", "casesensitive");

Der Wert für den Parameter casesensitive wird bei Verwendung von ASP.NET MVC 3 bereits serverseitig beim Beschreiben der Validierungsregel festgelegt.

public class HamsterFarbeValidationAttribute : ValidationAttribute, IClientValidatable
{
    [...]

    // Client-seitige Validierung
    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule
        {
            ErrorMessage = "Aber Krümel ist doch ein Goldhamster !!!",
            ValidationType = "hamsterfarbe"
        };
            
        rule.ValidationParameters.Add("casesensitive", "false");
        rule.ValidationParameters.Add("autocorrect", "true");
            

        // Für weitere Infos siehe [Nils Holgersson]

        yield return rule;
    }

}

Für Validierungsregeln, welche prüfen, ob sich ein Wert innerhalb eines bestimmten Wertebereichs befindet, kann die Methode addMinMax verwendet werden. Diese Methode erwartet den Namen der HTML5-Validierungsregel sowie die Namen von drei jQuery-Validierungsregeln, wobei eine nur auf die untere Schranke, eine nur auf die obere Schranke oder die letzte sowohl auf die untere als auch auf die obere Schranke prüft.

$.validator.addMethod(
    "percentageminmax",
    function (value, element, minmax) {


        var min = parseInt(minmax[0]);
        var max = parseInt(minmax[1]);

        if (value < min || value > max) return false;
        return true;
    });

    $.validator.addMethod(
    "percentagemin",
    function (value, element, min) {


        alert(min);
        if (value < min) return false;
        return true;
    });

    $.validator.addMethod(
    "percentagemax",
    function (value, element, max) {

        if (value > max) return false;
        return true;
    });

    $.validator.unobtrusive.adapters.addMinMax("percentageminmax", "percentagemin", "percentagemax", "percentageminmax");

Das nachfolgende Listing zeigt ergänzend zum letzten die dazugehörige Server-seitige Implementierung von IClientValidatable. Hier werden auch die Parameter, welche die untere sowie obere Schranke darstellen, definiert. Standardmäßig werden diese als min und max bezeichnet.

public class PercentageMinMaxValidationAttribute : ValidationAttribute, IClientValidatable
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        // Serverseitige Validierung ist für dieses Beispiel nicht relevant... 
        return ValidationResult.Success;
    }

    // Client-seitige Validierung
    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule
        {
            ErrorMessage = "Wert befindet sich ausserhalb des Gültigkeitsbereichs",
            ValidationType = "percentageminmax"
        };
            
        rule.ValidationParameters.Add("min", "0");
        rule.ValidationParameters.Add("max", "100");

        yield return rule;
    }

}

Kategorien: .Net 4 | ASP.NET