Ich muss HTML in MVC3 aus dynamischen Inhalten erstellen. Mein Szenario ist, dass ich eine Ansicht erstellen muss, die die HTML-Felder ändern kann, die je nach Benutzer und Umständen angezeigt werden. Der mögliche Bereich von Feldern ist nicht bekannt, bis wir sie zur Verwendung abrufen können und ändern können. Diese grundlegende Funktionalität ist in MVC ziemlich einfach. Ich möchte jedoch eine unauffällige clientseitige Validierung verwenden, bei der mein Problem auftritt.MVC3 unauffällige Validierung ohne Datenannotationen
Dies ist das Szenario: Ich habe eine Liste von komplexen Typen im Modell. Die Instanz des komplexen Typs speichert die Metadaten über das HTML-Feld, das erstellt werden muss. Zum Beispiel hat der komplexe Typ eine DataType-String-Eigenschaft, die uns den zu erstellenden HTML-Elementtyp angibt. "Text" für das Eingabeelement des Textfelds, "Kontrollkästchen" für das Eingabeelement des Kontrollkästchens, "Auswählen" für ein Auswahlelement und so weiter. Der komplexe Typ hat Eigenschaften wie Readonly, IsRequired, Value, Regex, MinLength, MaxLength usw. Er enthält alles, was wir benötigen, um eine Reihe von HTML-Elementen zu erstellen und diese Elemente zu validieren.
Also die Liste der komplexen Typen wird in unser Modell in der Steuerung eingefügt und dann nennen wir unsere Ansicht. Die Ansicht muss das entsprechende HTML-Element anzeigen, wobei die Einstellungen im komplexen Typ für jeden komplexen Typ in der Liste berücksichtigt werden. Dies kann erreicht werden, indem ein neuer Helper zum Verwalten des komplexen Typs oder mit einer switch-Anweisung in einer Schleife in der Ansicht erstellt wird, die den Datentyp des komplexen Typs überprüft und den entsprechenden Helper verwendet. So weit, ist es gut.
Das Problem tritt jedoch auf, wo wir clientseitige Validierung verwenden möchten, ohne die JavaScript-Client-Seite unauffällig Attribute selbst erstellen zu müssen, was ich gerne erreichen möchte. Gibt es eine Möglichkeit, den vorhandenen MVC-Code zu verwenden, um unauffällige clientseitige Überprüfung ohne Verwendung von Datenanmerkungen zu erstellen?
z. Überschreiben Sie den vorhandenen ModelMetadataProvider DataAnnotationsModelMetadataProvider, und rufen Sie eine neue Methode von meinem eigenen Hilfsprogramm auf.
Was wäre der beste Weg, um das obige Szenario zu erreichen?
Ich stimme @MystereMan zu. Auch Ihre Frage scheint etwas unvollständig oder eher nicht auf den Punkt zu kommen. MVC hat bereits eine unauffällige "clientseitige" Validierung eingebaut. Ich habe kürzlich etwas Ähnliches gemacht. Ich erstelle einen ModelMetadataProvider und neue HTML-Vorlagen, um unauffällige Datenstrich-HTML-Attribute in meinem HTML für "dynamische" Modelle zu platzieren, ja, das sind richtige dynamische Modelle, aber ich muss meinen eigenen JavaScript-Code schreiben, um diese Attribute zu handhaben. –
Am Ende der Frage stelle ich fest: "Gibt es eine Möglichkeit, dass ich den vorhandenen MVC-Code verwenden kann, um unauffällige clientseitige Validierung zu erstellen, ohne Datenanmerkungen zu verwenden". Das heißt, ich kann unaufdringliche Valiationen ohne Datenannotationen implementieren und ohne den JavaScript-Code selbst schreiben zu müssen. Es sieht so aus, als hätten wir beide die gleiche Lösung gefunden, um einen neuen ModelMetadataProvider zu implementieren, oder in meinem Fall, den ich vom AssociatedMetadataProvider geerbt habe. Es wäre schön, wenn wir das bereits vorhandene Rad nicht kopieren müssten, nur weil die Schrauben nicht genau ausgerichtet sind! –
Sie können nicht. So funktioniert es und leider muss in Ihrem Fall die Arbeit erledigt werden. –