Frage

Ich erstelle eine öffentliche Website mit ASP.NET. Als Teil der Leistung muss ich eine Admin-Site für die Dateneingabe der auf der öffentlichen Website angezeigten Inhalte erstellen. Ich habe mich gefragt, welche Techniken oder Verfahren die Leute verwenden, um Einträge mithilfe von ASP zu validieren .NET MVC.

War es hilfreich?

Lösung

Werfen Sie einen Blick auf die JQuery-Validierungs-Plugin Dieses Plugin ist erstaunlich, es lässt sich einfach implementieren und verfügt über alle Funktionen, die Sie jemals benötigen könnten, einschließlich der Fernvalidierung über AJAX.

Außerdem finden Sie hier ein Beispiel für eine MVC-Controller-Methode Hier das im Grunde den JsonResult-Aktionstyp verwendet, wie zum Beispiel:

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}

Andere Tipps

@Chuck – Sie können die AjaxToolKit-Steuerelemente noch nicht in ASP.NET MVC verwenden.Sie funktionieren nur im ASP.NET-Seiten-Postback-Modell.

Aktualisieren:

Seit dem 20. August 2008 können Sie nur die Skriptdateien des Ajax Control Toolkits innerhalb des ASP.NET MVC Framework verwenden.Hier ist ein Link zum freigeben.

Auch, Hier ist eine Anleitung über die Verwendung zur Erstellung eines Popup-Kalenders von Stephen Walther.

Ich möchte nur sicherstellen, dass jeder die richtigen Informationen erhält, wenn er diesen Thread liest.

Meiner Meinung nach ist die Verwendung von xVal mit jQuery und DataAnnotationsModelBinder die beste Kombination.

Manchmal gibt es jedoch Validierungsregeln, die nicht vollständig auf der Clientseite überprüft werden können, sodass Sie eine remote clientseitige Validierung verwenden müssen.

Ich habe einen Weg gefunden, die clientseitige Remote-Validierung mit xVal / jQuery.validate generisch zu implementieren

  • Validierungsregeln verbleiben ausschließlich in Ihrem ASP.NET MVC-Modell
  • Sie schreiben jede Validierungsregel nur einmal und nur in leicht testbarem C#-Code.Es gibt kein JavaScript oder ein anderes clientseitiges Gegenstück.
  • Es besteht keine Notwendigkeit, xVal oder jquery.validate zu verzweigen oder anderweitig zu ändern
  • Alles, was Sie für jede neue Remote-Formularvalidierungsregel tun müssen, ist, von der in diesem Artikel gezeigten Basisklasse abzuleiten.

Ich habe ein geschrieben Blogartikel Hierauf werden alle Details beschrieben.

Ich benutze gerne die LiveValidierung Bibliothek in meinen ASP.NET MVC-Apps.Damit konnte ich eine Möglichkeit einrichten, die Validierung auf dem Client und auf dem Server durchzuführen.Auf diese Weise weiß der Benutzer, dass etwas nicht stimmt, bevor er das Formular überhaupt abschickt, und kann dann die serverseitige Funktionalität für die anderen Ausnahmefälle nutzen.

Ich habe mit diesem Beitrag begonnen, der sehr gut beschreibt, wie man ein ähnliches Setup einrichtet:

Modellbasierte clientseitige Validierung für ASP.NET MVC

Auf meine Art:

Ich folge dem Beispiel, das im Account-Controller gezeigt wird, der mit der Preview 4-Version geliefert wurde, wobei das Feld im Controller überprüft wird und wenn ein Fehler auftritt, wird ein Array von Zeichenfolgenfehlern aggregiert, um es später in derselben Ansicht anzuzeigen, in der das gestartet wurde Anfrage.

Ich habe auch die Gedanken von verfolgt Stephen Walther auf MVC und ich denke dieser Beitrag Es empfiehlt sich, die Felder vor der erneuten Übermittlung erneut mit den übermittelten Daten zu füllen, damit sie geändert werden können.

Was benutzt ihr?

Haben Sie sich die mit dem AjaxToolKit bereitgestellten Steuerelemente angesehen?Ich habe den MaskedEditExtender und den ValidatorCalloutExtender verwendet und war mit den Ergebnissen sehr zufrieden.

@Dale – danke für die Korrektur!War mir dessen nicht bewusst (habe erst letzte Woche angefangen, das Toolkit zu verwenden).Bitte ignorieren Sie meinen Vorschlag :)

@Zack:Ja, ich habe diesen Beitrag auch gelesen und basierend auf diesem Beitrag verwendet SO jQuery als Javascript-Bibliothek.Ich kann nicht für das SO-Team sprechen, aber meine fundierte Vermutung ist, dass sie höchstwahrscheinlich die Ajax-Funktionen in JQuery verwenden, um ihre Ajax-Anfragen zu bearbeiten.Es ist eigentlich gar nicht so schlecht, von Hand zu programmieren, wenn Sie eine Javascript-Bibliothek wie verwenden jQuery, Prototyp, Und MooTools.Anschließend verwenden Sie den neuen JsonResult ActionResult-Rückgabewert für Ihre Aktionen und stellen Ajax-Anfragen an diese.Diese Bibliotheken kapseln die XmlHttpRequest-Objekte für Sie und machen es einfach, Ajax-Aufrufe und Browser sicher zu machen.

Du kannst den ... benutzen .net-Validierungsframework auf Codeplex, wenn Sie sowohl eine client- als auch serverseitige Validierung wünschen.Es generiert Code für das jQuery-Validierungs-Plugin basierend auf den im Modell definierten Regeln.Wenn Sie außerdem die „erweiterte“ Funktionalität des Frameworks verwenden, können Sie die Einstellungen des jQuery-Validierungs-Plugins manuell steuern.Besuche die MVC-Schnellstart.

Verwenden Sie eine Mischung aus clientseitiger und serverseitiger Validierung.

Für die clientseitige Validierung wird der im beschriebene Ansatz verwendet Antwort von Daniel Pollard Scheint gesund.Die clientseitige Validierung ist nicht obligatorisch, bietet dem Benutzer jedoch ein angenehmeres und reaktionsschnelleres Erlebnis.

Die serverseitige Validierung sollte hingegen obligatorisch sein:Vertrauen Sie niemals den Eingaben des Kunden.Ich würde auf jeden Fall einen Blick auf die Funktionen werfen, die das ASP.NET MVC-Framework in Vorschau 5 bietet (wie im beschrieben). Antwort von Matt Hinze),

Meine Lieblingsmethode ist die Durchführung der Client- und Servervalidierung mithilfe modellbasierter Attribute.Ich habe dazu einen kurzen Beitrag geschrieben und auch den Quellcode veröffentlicht, der es Ihnen im Grunde ermöglicht, eine Klasse wie diese zu erstellen



class User {

    [Required]
    public string Name{get;set;}

    [Email][Required]
    public string Email {get;set;}
}

Und der entsprechende Javascript-Code wird generiert, um die Client-Validierung durchzuführen, und der serverseitige Validierungsläufer validiert Ihr übermitteltes Formular.

Lesen Sie den Beitrag noch einmal durch Hier

@Futter - Keine Sorge.Dafür gibt es SO.Man lernt etwas und die Person, die die Frage stellt, lernt etwas.

Wie wird AJAX bei Stack Overflow gehandhabt?Macht JQuery das?

  • Klicken Sie mit der rechten Maustaste auf die Seite
  • Suchen Sie im Popup-Menü nach „Seitenquelle anzeigen“.
  • Klick es

:-)

Wenn Sie bei der sofort einsatzbereiten Funktionalität bleiben möchten, diese aber erweitern müssen, werfen Sie einen Blick auf meine Antwort hier zu einer Frage zu IDataError.

Grundsätzlich verwende ich Datenanmerkungen und einen Modelbinder für kompliziertere Logik.Ich habe festgestellt, dass es eine ziemlich saubere Methode ist und es mir ermöglicht, innerhalb der Grenzen dessen zu bleiben, was MS bietet.

Ich erkläre, wie Sie mit einem Modelbinder eine Überprüfung Ihres Modells auf Klassenebene hinzufügen können, ohne ihn verwenden zu müssen IDataError - was, wie Sie hier gesehen haben, ziemlich ungeschickt sein kann.Sie können weiterhin [Erforderliche] Attribute oder andere benutzerdefinierte Validierungsattribute verwenden, aber Sie können einzelne Modellfehler hinzufügen oder entfernen.Weitere Informationen zur Verwendung von Datenanmerkungen kann ich wärmstens empfehlen dieser Beitrag von Scott Gu.

Eine Möglichkeit, die Validierung in ASP.NET MVC zu implementieren, besteht darin, Datenanmerkungen zusammen mit der clientseitigen Validierung zu verwenden.Das Artikel zeigt, wie wir das für vom Entity Framework generierte Modellklassen tun können.

Dale Ragan schrieb:

Sie können die AjaxToolKit-Steuerelemente nicht in ASP.NET MVC verwenden

Wie wird AJAX bei Stack Overflow gehandhabt?Macht JQuery das?In seinem Coding Horror-Beitrag Geheimnisse der JavaScript-Ninjas Jeff hat beim Schreiben von Stack Overflow über die Verwendung von JQuery geschrieben.

Sicherlich haben sie es nicht von Hand codiert.Ich habe das einmal mit dem gesamten XMLHttpRequest-JavaScript gemacht, als der Begriff „AJAX“ um 2005 populär wurde.Es war ein Albtraum.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top