Frage

Ich habe eine Seite mit ASP.NET MVC 2 mit KnockoutJS, KnockoutJS Mapping -Plugin, und JQuery 1.7.1 erstellt. Ich möchte auch das KnockoutJS -Validierungs -Plugin verwenden (gefunden hier). Ich muss jedoch sowohl eine Server- als auch die Client -Seitenvalidierung haben.

Ist es möglich, dass meine Ansichtsmodelle zur Karte der Abbildung zum Zeitpunkt stehen? Knockoutjs Validierungs -Plugin Was verwendet die Methode .extend ()?

Bearbeiten: Beispiel. Wenden Sie sich automatisch:

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

Das mögen:

var viewmodel = {
    firstname: ko.observable().extend({ required: true });
}
War es hilfreich?

Lösung

In dem MVC steuert Toolkit Ich habe eine Engine implementiert, die die übliche MVC -Validierung (Datenanmerkungen oder was auch immer) auf Knockout.js. Darüber hinaus kann Knockout mit MVC -Helfern verwendet werden, einige Bindungen werden automatisch abgeleitet usw.

Andere Tipps

Wenn Sie Knockoutjs und JQuery verwenden, habe ich die folgende sehr einfache Methode zur grundlegenden Client -Seitenvalidierung entwickelt.

Wo immer Sie die Fehlermeldung auf Ihrer Seite anzeigen möchten, geben Sie ein solches Spann -Tag an:

<span name="validationError" style="color:Red" 
data-bind="visible: yourValidationFunction(FieldNameToValidate())">
* Required.
</span>

Offensichtlich müssen Sie "yourValidationFunction" schreiben, um zu tun, was Sie wollen. Es muss nur wahr oder falsche zurückgeben, wahre bedeutet, den Fehler anzuzeigen.

Sie können JQuery verwenden, um zu verhindern, dass ein Benutzer fortschreitet, wenn Validierungsfehler angezeigt werden. Sie haben wahrscheinlich bereits eine Save -Taste, die eine JavaScript -Funktion auslöst, um etwas AJAX oder was auch immer zu erledigen. Geben Sie dies also ganz oben auf:

 if ($("[name='validationError']:visible").length > 0) {
        alert('Please correct all errors before continuing.');
        return;
    }

Dies ist viel einfacher und flexibler als viele andere Validierungslösungen da draußen. Sie können Ihre Fehlermeldung überall positionieren, wo immer Sie möchten, und Sie müssen nicht lernen, wie Sie eine Validierungsbibliothek verwenden, und diese Methode funktioniert unabhängig von der Server -Seiten -Technologie.

Ich würde empfehlen, die integrierte MVC -Clientside -Validierung zu verwenden. Möglicherweise müssen Sie sie aufrufen, versuchen Sie Folgendes:

$.validator.unobtrusive.parse(yourFormElement)

Code von: https://stackoverflow.com/a/5669575/941536

Ich bin mir jedoch nicht sicher, ob MVC2 eine unauffällige Clientside -Validierung hat, nicht sicher, ob ein Upgrade auf MVC3 bei Bedarf eine Option für Sie ist.

Das Validierungs -Plugin funktioniert so, wie Sie die Observablen erweitern, die Sie validieren möchten.

Es spielt keine Rolle, ob sie aus Zuordnungen erstellt werden. Erstellen Sie einfach eine Funktion, die Sie nach dem Mapping ausführen, und fügen Sie die gewünschte Validierung hinzu.

Oder wenn Sie möchten, können Sie die Validierungsbindungen verwenden. Lesen Sie die Readme auf GitHub für die Knockout -Validierung und Sie sehen, wie sie es machen.

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