Editor-Vorlage funktioniert nicht mit DisplayFormat

8

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?

    
Dismissile 19.08.2011, 15:04
quelle

3 Antworten

6

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

selbst formatieren     
Ivan Zlatev 19.08.2011, 16:56
quelle
3

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%     
Alexander van Trijffel 22.08.2012 14:54
quelle
0

ändern Sie zu @Html.TextBoxFor(m => m, new { @class="datepicker" })

    
hazzik 19.08.2011 17:43
quelle