Nur um ein paar Punkte zu klären,
Ich habe die Daumen gedrückt. Ich vermisse etwas Offensichtliches, weil das für mich keinen Sinn ergibt. Jede Hilfe, die Sie anbieten können, wäre sehr willkommen. Ich habe meinen Code am Ende der Frage eingefügt.
DateTime
-Felder, die in einem Formular auf einer Seite in meiner Anwendung enthalten sind: StartTime
und EndTime
. StartTime
-Feld funktioniert einwandfrei, nur mit gültigen Zeiten als Eingabe und Anzeige eines Fehlers für unsinnige Zeiten wie 28:30 oder 17:67, bis der Benutzer es korrigiert. EndTime
wird jedoch nicht korrekt validiert. Schlechte Eingaben werden auf die aktuelle Uhrzeit / das aktuelle Datum zurückgesetzt, bevor sie an die Steuerung zurückgegeben werden. Die Steuerung sieht niemals die schlechten Werte, was bedeutet, dass ich sie nicht abfangen kann und an dieser Stelle einen Fehler zurückgebe. EndTime
Validierung funktioniert, sie verhindert jedoch nicht die Formularübergabe. Da ich ein Arbeitsfeld habe, habe ich versucht, den Fehler zu korrigieren. Ich stolperte jedoch, als mir klar wurde, dass es keine Unterschiede zwischen den beiden gibt. Da ich entschieden habe, dass ich etwas verpasst habe, habe ich die Namen der Variablen so geändert, dass StartTime
den Code EndTime
benutzt und umgekehrt, ich habe das in jedem der folgenden Abschnitte nacheinander getan, in der Hoffnung, einen Punkt zu finden, an dem der Feld, das funktionierte vertauscht. Das ist jedoch nie passiert. Selbst wenn die Gesamtheit ihres Codes umgestellt wurde, wurde immer noch die EndTime
Variable / Feld gefunden, die unterbrochen wurde und die StartTime
Variable / Feld, die funktionierte.
Obwohl ich fast eine Woche mit diesem Bug verbracht habe, konnte ich online keine ähnlichen Probleme mehr finden und stolperte darüber, wohin ich gehen oder was ich jetzt versuchen sollte. Ich habe versucht, nach Problemen zu suchen, die von DateTime-Kalenderauswahlprogrammen verursacht werden, sowie von Validierungsfehlern im Allgemeinen, aber ich kann nichts finden, was für diese Situation nützlich wäre.
Dies ist einer der letzten Bugs, die behoben werden müssen, bevor das Projekt abgeschlossen ist, und jede Hilfe oder sogar Ideen, die Sie anbieten können, wären erstaunlich.
Ich habe hier alles eingefügt, was ich denken könnte, das mit den fraglichen Feldern interagiert. Wenn ich etwas verpasst habe oder weitere Informationen benötigst, lass es mich wissen.
Ich habe die folgenden zwei DateTime
Felder in meiner Record
Entity
Der Vollständigkeit halber ist dies der Code der TimeNow()
-Funktion:
Die Entität Record
wird dann wie folgt in ein ViewModel eingefügt:
Sie werden dann wie folgt in ein Formular auf der Seite eingefügt:
%Vor%Und dann haben sie endlich ein Skript auf sie angewendet, um die Verwendung einer Kalenderauswahl bei jeder Eingabe zu ermöglichen. Das Skript sieht so aus:
%Vor%Vielleicht ist ein Vorschlag, die DateTime.TryParseExact-Methode zu verwenden, die die "String" -Darstellung des Datums mit dem gewünschten Format überprüft und einen Fehler zurückgibt, wenn die Zeichenfolge nicht dem angegebenen Format entspricht. Hier ist Code, beachten Sie dateFormats basieren auf australischen Standarddaten. Sie können natürlich Stunden und Minuten dazu hinzufügen.
Hinweis: parsedDate ist ein DateTime-Format. Verwendung von unten ist:
%Vor%Und die Methodendeklaration. Verwenden Sie entweder in der statischen Klasse oder direkt in Ihrer Klasse.
%Vor%Tags und Links asp.net-mvc c# razor datetime validation