Ich versuche, eine Editor-Vorlage für ein DateTime-Feld zu erstellen, und es scheint mein DisplayFormat-Attribut nicht zu respektieren.
Mein Modell:
%Vor%Meine Editor-Vorlage im Ordner /Views/Projects/EditorTemplates/DateTime.cshtml
%Vor%Hier ist die Ansicht, die alles miteinander verbindet:
%Vor%Wenn ich es so habe, dann sehe ich den Zeitteil des Datums. Wenn ich die Editor-Vorlage entferne, funktioniert es gut und zeigt nur den Datumsteil an. Warum scheint es DisplayFormat zu ignorieren, wenn ich eine Editor-Vorlage habe?
Sehen wir uns zuerst an, was passiert, wenn Sie keine Vorlage verwenden. Ich habe den generischen Typ hinzugefügt, um den Unterschied noch deutlicher zu machen.
%Vor%Sehen wir uns nun Ihren Vorlageneditor an:
%Vor%Beachten Sie den Unterschied? In letzterem Fall handelt es sich lediglich um eine DateTime-Instanz, dh Sie verlieren die Metadaten, die durch die Eigenschaft des Modells definiert sind.
Wenn Sie eine Vorlage verwenden, sind Sie für die Verarbeitung der Metadaten zuständig, die Ihrer Vorlage in ViewData.ModelMetadata.*
zur Verfügung gestellt werden sollten. In Ihrem Fall müssen Sie das Datum beispielsweise mit ViewData.ModelMetadata.DisplayFormatString
Das DisplayFormat wird angewendet, wenn Sie Ihre Editor-Vorlage ändern zu:
%Vor%Fügen Sie das Attribut DataType.Date zu Ihrer Modelleigenschaft hinzu, um Ihre Date-Eigenschaft HTML5-kompatibel zu machen:
%Vor%Fügen Sie unter /Views/Projects/EditorTemplates/Date.cshtml eine Editorvorlage für das Datum hinzu:
%Vor%Tags und Links asp.net-mvc asp.net-mvc-3 .net mvc-editor-templates