2016-11-18 4 views
0

ich Datetime in Modell habe:Das Feld kein Datum ist, auch wenn es richtig ist,

[DataType(DataType.DateTime)] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:dd/MM/yyyy HH:mm}")]  
    public DateTime Start { get; set; } 

    [DataType(DataType.DateTime)] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:dd/MM/yyyy HH:mm}")]  
    public DateTime End { get; set; } 

Wenn ich 25.05.2016 10:00 schreiben, sagt es, dass das Feld Start/Ende kein Datum, aber wenn ich schreibe 12.05.2016 10:00 es ist richtig. Die erste Zahl ist mit Tag (12), Sekunde zu Monat (05), Letzte zu Jahr (2016), 10 zu Stunde und 00 zu Minuten abgestimmt, also warum kann ich nicht Tag mehr als 12 schreiben lassen?

+0

In Ihrer Ansicht wie werden die Textfelder angezeigt? '@ Html.EditorFor (Modell => Modell.Start)'? –

+0

Verwenden Sie jQuery Datepicker oder ein beliebiges Plug-in? Oder schreibst du das Datum manuell? –

+0

Ich schreibe es manuell – Cezar

Antwort

0

Was Sie hier im folgenden Code haben, ist nur das Anzeigeformat.

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:dd/MM/yyyy HH:mm}")]  

Standard Datum Zeitformat ist MM/tt/HH: mm, also eigentlich für Datum Zeit 2016.12.05 10:00, 12 ist der Monat, 05 Tag und 2016 Jahre ist.

C# wendet diese Überprüfung an, wenn Sie versuchen, Datum mit anderen Formaten festzulegen.

Und der Zweck des Anzeigeformats ist es, das Datum in TT/MM/JJJJ zu rendern.

+0

Also wie kann ich es ändern, um zu arbeiten, wie ich es arbeiten will? Wie ich geschrieben habe, ist die erste Zahl Tag, nicht Monat, aber es lässt mich nicht Tag größer als 12 setzen (Ich überprüft das durch die Vorschau meines DateTime-Objekts im Post-Controller) – Cezar

+0

Sie müssen so etwas tun –

0

DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture); fügen Sie bitte das Zeitformat HH:mm hinzu, wenn Sie diese Information auch benötigen.

+0

Wo habe ich um das zu setzen? Ich erinnere, dass es nicht zur POST-Funktion gehen wird, wenn die erste Zahl größer als 12 ist. – Cezar

+0

Ich nehme an, Sie versuchen, dies zu posten, können Sie diese Parsing in der cshtml tun. –

1

Anstatt dies direkt in der Klasse zu tun, versuchen Sie es in der Ansicht.

@Html.EditorFor(model => model.Start, "{0:dd/MM/yyyy HH:mm}") 

@Html.EditorFor(model => model.End, "{0:dd/MM/yyyy HH:mm}") 

Dann in Ihrem Modell nur tun:

[DataType(DataType.DateTime)]  
public DateTime Start { get; set; } 

[DataType(DataType.DateTime)] 
public DateTime End { get; set; } 

Lassen Sie mich wissen, ob das hilft!

+0

Funktioniert nicht, natürlich ist die erste Zahl ein Tag richtig, aber dieser blöde Validator lässt es nicht los, um die Funktion zu posten, wenn der Tag größer als 12 ist ... – Cezar

+0

@Cezar so passiert der Fehler, wenn Sie auf "Senden" klicken. oder sobald der Fokus das Textfeld verlässt? –

+0

Ich klicke auf create und es prüft, ob der Textboxwert OK ist, ohne die Seite neu zu laden. – Cezar

0
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
public DateTime Start { get; set; } 

und dies Ihrer Ansicht nach:

@Html.EditorFor(x => x.Start) 

dies sollte funktionieren.

+0

Funktioniert nicht, natürlich ist die erste Nummer ein Tag korrekt, aber dieser blöde Validator lässt es nicht zur Post-Funktion gehen, wenn der Tag größer als 12 ist. – Cezar

+0

Können Sie Ihren cshtml-Code hier posten? Also können wir einen Blick darauf werfen und vorschlagen, was schief gelaufen ist. –

+0

[cshtml] (http://pastebin.com/D34ryCFU) [Ansicht erstellen] (http://pastebin.com/Nrbmqqub) [Controller-Funktionen] (http://pastebin.com/MShQ51HK) – Cezar

Verwandte Themen