warum ASP.Net MVC-Range-Attribut nehmen eine Art?
Ich Frage mich nur, warum der Bereich validation-Attribut kann ein Typ und die zwei strings als Parameter? Dies ist für die Validierung von strings gegen ein Enum oder so etwas?
Auch, was ich versuche zu tun, ist zu finden eine einfache Möglichkeit zur überprüfung eines 3-Zeichenkette, die vorhanden sein müssen in ein enum, alle Anregungen?
Dank,
Alex.
wie/warum ist die 3 char-string muss in einen enum?
Ich war versucht zu speichern, der eine Adresse Stand als 3-Zeichen-string, aber ich änderte es in ein byte und bin jetzt nur das Bearbeiten der Daten-Typ zu entsprechen, die von der enum.
siehe meine Antwort. Nicht sicher, wie die enum funktionieren würde, aber die 3 char-string arbeiten könnte, wenn Sie wissen, wie
Beachten Sie auch: RangeAttribute ist aus
Ich war versucht zu speichern, der eine Adresse Stand als 3-Zeichen-string, aber ich änderte es in ein byte und bin jetzt nur das Bearbeiten der Daten-Typ zu entsprechen, die von der enum.
siehe meine Antwort. Nicht sicher, wie die enum funktionieren würde, aber die 3 char-string arbeiten könnte, wenn Sie wissen, wie
string.Compare()
vergleicht Sie. Auch diese überprüfung würde nur funktionieren, auf dem sever Seite. Fügen Sie Ihre eigenen benutzerdefinierten Klasse, die IComparable
für Ihre Saiten.Beachten Sie auch: RangeAttribute ist aus
System.ComponentModel.DataAnnotations.dll
NICHT Teil asp.net mvc.InformationsquelleAutor Alex Hope O'Connor | 2011-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich fand die Reihe ctor Sie erwähnt fischig. Konnte nicht umhin, zu untersuchen. (So schrieb ich diese Antwort wie ein log während der Untersuchung.)
Vom MSDN
Hinweis : MSDN sagt der
Type
sollteIComparable
. Und, Ihrem Beispiel die Beschreibung sagt seine für ein date Vergleich, wenn nicht!.So, da hatte ich meine Produktion asp.net mvc3 app geöffnet, ich habe versucht, diese auf ein mit einem Datum-Zeit wie dieser:
Wenn ich es laufen lasse passiert das:
Hinweis, wie obwohl ich angegeben das minimum und maximum mit gestrichelten und keine Zeit, es gibt ein anderes format, so dass Ihr wahrscheinlich
TryParsing
die Saiten richtig? Aber ich bin sicher, es ist nicht möglich, sichICompare
die zwei auf der client-Seite!? Nun, egal welches Datum ich angebe, zeigt immer noch den Fehler. (Das Datum wird eingegeben als 11-Mar-20 (20 in 2020).)Ich habe versucht, char (unten), da das ein
IComparable
zu. Gleiche Sache. Es kann nicht wirklich tun, zu verwalten eine Reihe Vergleich auf die client-Seite.Aber warten...
Entfernen Sie einfach das Client-Validierung! Ich Entfernt und Verweise auf die JQuery-Validierung und Unaufdringlich Validierung und viola! Es funktioniert perfekt. Es Beiträge, dann zeigt den Fehler richtig, wenn die Werte (Sowohl Char und Date) sind NICHT innerhalb des angegebenen Bereichs.
Hinweis: Vielleicht kann jemand erweitern Sie diese Lösung, um die Deaktivierung NUR bestimmte Felder für den client-Validierung.
Ich hoffe, das war hilfreich.
Ihr willkommen. Ich eigentlich wenn es nicht funktioniert, bis die aber warten Was ist, wenn ich habe versucht, das deaktivieren der client-Validierung und-es funktionierte! =P
Ich weiß, dies wurde gebucht vor langer Zeit, aber trotzdem: vielen vielen Dank für die KLARE Erläuterung! Ich habe das problem heute und nicht finden konnte, eine richtige Erklärung.. 🙂
Du musst Sie nicht deaktivieren Sie die client-seitige Validierung vollständig. Sie können einfach entfernen Sie die client-side-Bereich Validierung für Ihre spezielle textbox statt. Wie diese:
$('yourTextBox').rules('remove','range');
Es nicht akzeptieren, "20", weil er liest es als "0020", nicht "2020". Zweistellige Jahreszahlen sind nicht kompatibel mit vielen Dingen im code, mehr wegen dem Y2K-bug.
InformationsquelleAutor gideon
Hab ich auch gemerkt, dass die jQuery-Validierung nicht gut spielen mit dem ASP-MVC-Range-validator (wie es scheint, jQuery-Validation-plugin erfordert die range-Werte zu zahlen).
Eine einfache Lösung ist, schalten Sie die Validierung für bestimmte Felder. Die server-Seite validaton funktioniert auch.
Folgenden Beispiel wird das entfernen der "range" - Regel aus alle Eingabefelder mit einem "date" - Klasse:
InformationsquelleAutor jhdrn
Ich landete erstellen einer benutzerdefinierten DateRangeAttribute wie beschrieben hier.
Sie nicht bekommen, client-seitige Validierung, aber Sie können anpassen, um Ihre Bedürfnisse anzupassen und sich nicht mehr mit javascript erforderlich. Hier der code, und wie man es verwendet:
DateRange ist einfach:
InformationsquelleAutor Alex
Habe auch ich aufgegriffen das ziemlich spät 🙂
Sicherlich die
CustomValidation
- Attribut wurde für diese Umstände?Diese Weise, die wir nicht haben, um über das ändern jedes client-seitige Validierung. Plus es hat den Vorteil, dass er es uns ermöglicht, die Gelegenheit, einem konfigurierbaren Bereich.
Beispiel:
InformationsquelleAutor ne1410s
Können Sie die unten benutzerdefinierten Datumsbereich Validierung vergleicht den Wert des Datums, sofern min-und max-Datum oder erwähnt abhängige Eigenschaften. Es zeigt auch die client-seitige Validierung Unterstützung und integration.
CustomDateRange
Clientseitiger Integration
Demo
Modell
Datum steuert mit Validierungen
Laden Sie die komplette Umsetzung von hier.
InformationsquelleAutor Amit Gupta
Jungs! Hier ist noch eine solition.
Ich habe es hier gefunden:
MVC-Validierung Niedriger/Höher als der andere Wert
http://foolproof.codeplex.com/
InformationsquelleAutor Eugene