breezejs: Überschreibender Anzeigename

7

Ich bin dabei, Validierungsnachrichten anzupassen. Es funktioniert gut mit der MessageTemplates-Eigenschaft. Allerdings verwendet es% displayName%, um den Namen der Eigenschaft zu rendern, und ich kann nicht herausfinden, wie man diesen Wert überschreibt? Gibt es das überhaupt zu tun?

    
Sam 24.05.2013, 10:48
quelle

7 Antworten

7

Dies ist noch nicht gut dokumentiert, aber Sie können einfach die Eigenschaft 'displayName' auf eine beliebige dataProperty setzen. Dies überschreibt den automatisch generierten Anzeigenamen und wird für alle Validierungsnachrichten für diese Eigenschaft verwendet. Also

%Vor%

Siehe auch "Anpassen der Nachrichtenvorlagen" unten auf dieser Seite: Breeze Validation

    
Jay Traband 24.05.2013, 16:56
quelle
13

Ich wollte das auch, aber ich wollte das Attribut [DisplayName] aus meinem EF-Modell verwenden. Ich konnte niemanden finden, der ein Beispiel dafür hatte, nachdem ich einen Weg gefunden hatte, den ich teilen wollte.

Zuerst habe ich die von meinem BreezeController zurückgegebenen Metadaten erweitert:

%Vor%

Dann habe ich nach dem Laden der Metadaten ein kleines Javascript hinzugefügt, um die Anzeigenamen aus den erweiterten Metadaten zu holen, in denen Breeze sie finden möchte.

%Vor%

Ich benutze eckig, wenn du es nicht bist, kannst du das kantige Zeug ignorieren und wahrscheinlich auf die Idee kommen. Das scheint ziemlich gut zu funktionieren. Es sollte ziemlich einfach sein, dies auch auf andere Modellattribute wie das Validierungsattribut RegularExpression auszuweiten. Ich werde wahrscheinlich als nächstes daran arbeiten.

Zu guter Letzt, ein Teil dieses Codes ist nicht optimiert und könnte wahrscheinlich umstrukturiert werden, ein bisschen aufgepeppt, aber ich habe es gerade funktioniert und dachte, ich würde es teilen. Wenn jemand Vorschläge für einen besseren Weg hat, lassen Sie es mich wissen. Hoffentlich wird es Breeze erlauben, die Metadaten in Zukunft noch besser zu unterstützen. Das scheint ein bisschen wie ein Hack zu sein.

    
jpcoder 14.06.2013 04:56
quelle
3

Nach jpcoder Anfrage für Vorschläge, hier geht meine leicht verbesserte Server Teil:

%Vor%     
vcastro 16.10.2013 15:50
quelle
0

Betrachten Sie Ссылка ,

Könnte dies verbessert werden, indem der vorhandene "name" -Wert in nameOnServer umbenannt wird (um den getDataProperty-Aufruf zu erfüllen) und der DisplayNameAttribute-Wert als "name" eingefügt wird?

    
Mark van Proctor 16.07.2013 01:45
quelle
0

Eine notwendige Änderung am Servercode besteht darin, dass Sie, wenn sich Ihre Modellklassen in verschiedenen Assemblys befinden, kein

verwenden können %Vor%

Sie benötigen den Namespace für jeden Typ (der in den Metadaten enthalten ist) und (glaube ich) BuildManager verwenden, um die geeigneten Typen in verschiedenen Assemblies zu finden. Das Mapping von cSpaceOSpaceMapping könnte eleganter erreicht werden, aber ich hatte keine Zeit, die verschiedenen json-Formatierungsoptionen zu recherchieren.

%Vor%     
Jeremy Noble 16.01.2014 12:54
quelle
0
%Vor%     
Simon 09.05.2016 18:34
quelle
0

Verbessere die Antwort von jpcoder ...

Für mich waren die meisten meiner DisplayName-Änderungen "PascalCaseFieldName" oder "camelCaseFieldName" durch "Großbuchstaben-Feldname" zu ersetzen. Anstatt also jede Eigenschaft DisplayName auf dem Server festzulegen, habe ich eine Standardfunktion zum Festlegen von displayName angewendet.

Endergebnis war viel weniger EF Annotation erforderlich. Mein TypScript ist:

%Vor%     
RockResolve 01.07.2016 00:06
quelle

Tags und Links