Die Validierung Zeit-nur Eingang in asp.net MVC unobtrusive validation
Habe ich zwei getrennte Felder auf der Seite: eins für Datum und eins für die Zeit.
Dies ist das Modell:
[Required]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:hh:mm tt}")]
public DateTime? StartTime { get; set; }
[Required]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime Date { get; set; }
Dies ist die Ansicht:
@Html.TextBoxFor(m => m.Date, "{0:MM/dd/yyyy}", new { type = "text" })
@Html.TextBoxFor(m => m.StartTime, "{0:hh:mm tt}", new { type = "text", id = "timeStart" })
Javascript unobtrusive validation funktioniert gut mit der Date
Bereich aber wenn ich enter "11:00 Uhr" oder "11:00 Uhr" in StartTime
die Validierung zeigt
"Das Feld Startzeit muss ein Datum"
Server-seitige Validierung funktioniert mit "0:hh:mm tt"
es ist nur das javascript, das ein problem hat. Für jetzt habe ich nur deaktiviert die javascript-überprüfung aber möchte schließlich, um es auf dieser Seite
Kann das getan werden, für die "Zeit" - Feld?
InformationsquelleAutor Vitalik | 2013-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ehrlich gesagt der einfachste Weg dies zu erreichen ist die Verwendung einer regular expression validator für. Hier ist ein Beispiel.
Unauffälligen Validierung sollte funktionieren gut mit diesem Ausdruck.
Hoffe das kann dir helfen!
BEARBEITEN
Habe ich behoben, die den regulären Ausdruck gestartet wirft Fehler in der Konsole, weil einige ungültige Zeichen. Auch müssen Sie eine string-Eigenschaft wrapper für diese Eigenschaft, sonst wird es immer nach einer gültigen
DateTime
.Unten ist das, was Sie verbindlich sein sollte.
Modell:
Anzeigen:
Nach der überprüfung Ihres Codes wieder einmal erkannte ich, dass Sie ändern Sie die ID auf "timeStart". Wenn Sie diese entfernen, der die Validierung auslösen soll richtig.
Ich muss etwas falsch machen. moment ich füge RegularExpression-Attribut schaltet es um server-seitige Validierung nur
Haben Sie entfernen die
id = "timeStart"
Teil der razor-helper für das Feld?Super Antwort! Manche Leser finden vielleicht ändern Sie den regulären Ausdruck zu
^(0?[1-9]|1[0-2]):[0-5][0-9] [aApP][mM]$
hilfreich. Die0?
ändern, in der Nähe der Anfang macht die führende null optional für Zeiten vor 10:00 Uhr. Die[aApP][mM]
ändern in der Nähe des Ende zeigt Barmherzigkeit zu ungeschickt Schreibkräfte wie mich, der Typ bin, der Am, pM oder Pm.InformationsquelleAutor technicallyjosh
Hinzufügen
DataType.Time
Attribut Ihrer Zeit-Feld, und verwenden SieEditorFor
s zu entfernen format Vervielfältigung:Modell
Ansicht
InformationsquelleAutor Dima
Ihrer Ansicht Modell versuchen, diese
und das Attribut class
EDIT: ich bin mir auch bewusst, dass in einigen Fällen müssen Sie einige scripting auf der client-html-wie in dieser Antwort MVC3-unauffällig Gruppe Validierung von Eingaben obwohl ich bin mir nicht genau sicher, wenn es erforderlich ist. Diese Antwort sollte erhalten Sie auf halbem Weg gibt. Leider, ich bin nicht sicher, dass diese Antwort verhindert, dass die postback, aber es tut flag das Modell als ungültig.
InformationsquelleAutor user1778606