2010-12-10 4 views
3

Wir haben zwei Datenmodelle: schreibgeschützt Anzeigen von Modellen zum Client und "Steuern" Modelle senden geänderte Daten zurück. Im Wesentlichen sind sie gleich, und alle haben Daten Anmerkungen wie diese auf sie:ASP.NET Data Annotations: Wie mit einem JSON-Client teilen?

// Require nothing but one or more digits 
[RegularExpression(@"^\d+$", ErrorMessage = "*")] 
public string productid {get;set;} 

Alle unsere Kommunikation über Controller-Methoden geht JsonResult und Json() verwenden.

Wie könnte der Kunde diese Datenanmerkungen berücksichtigen? Wie könnte ein JQuery-Plugin wie validate diese regulären Ausdrücke, erforderlichen Bereiche usw. für sich selbst erhalten?

Wir haben eine Antwort, die ein Header-Objekt mit verschachtelten Sammlungen (wie eine Produktliste Liste) enthält. Wir dachten, die Regex könnte in der Kopfzeile vorhanden sein und dann auf alle Formularfelder angewendet werden. Aber wie können wir die Anmerkungen in ein serialisiertes JSON-Objekt übersetzen?

Antwort

2

Siehe this Blogbeitrag.

Im Wesentlichen rufen Sie eine MVC Html Helper-Methode <% Html.EnableClientValidation();%>, die einige JSON auf der Seite ausgibt. Dann gibt es eine Übersetzungsmethode in MicrosoftMvcJQueryValidation.js, die jquery validate mit den Datenannotationen für jedes Feld eingibt.


Update für Kommentare

Wenn Sie die HTMLFormElements rendern ohne mvc Kontrollen verwendet, wird es viel schwieriger sein. Sie müssen wahrscheinlich auf die ViewData.ModelMetadata zugreifen, um auf die Datenanmerkungen zuzugreifen. Möglicherweise müssen Sie eine benutzerdefinierte MetaDataProvider verwenden ich MVC3 RC prüfen, gehen würde so Ith unaufdringlich Validierung (Datenattribut)

Hier sind einige Links verwenden:

+0

Was, wenn Sie es nie zur Ansicht schaffen, dh keine Aspx-Seite? –

+0

@Dr. Zim - Ich bin mir nicht sicher, ob ich deine Frage verstehe. Möchten Sie Daten anhand eines mit Daten annotierten Modells validieren oder die Datenanmerkungen in json abrufen? Die Validierung von Clients impliziert Benutzereingaben - ohne jemals zu einer Ansicht "zu kommen". Ich kann nicht sehen, wie das möglich ist. –

+0

Wir verwenden JQuery Ajax-Aufrufe, um Daten zum Client zu bringen, dann Microsoft JQuery-Vorlagen zum Rendern von Inhalt zu verwenden und Microsoft Data Linking zum Binden eines Arrays an die Formularelemente zu verwenden. Irgendwie muss ich das an die Klassen angehängte Regex in etwas übersetzen, das JQuery-Plugin validieren kann (zum Beispiel). –

Verwandte Themen