Verwenden der neuen Modellbindung in asp.net 4.5 zum Formatieren von Datumsfeldern

8

In den alten Tagen vor asp.net 4.5 konnten wir einfach ein Datum an ein Gridview, Formview oder ein anderes datengebundenes Steuerelement binden und es mit einer einfachen Formatzeichenkette präsentierbar machen.

%Vor%

Die neue, stark typisierte Modellbindung ist etwas schwieriger.

%Vor%

funktioniert, erzeugt aber die vollständige Datum / Uhrzeit-Zeichenfolge und nicht nur das Datum.

%Vor%

.. das sollte funktionieren, aber es erzeugt einen Kompilierzeitfehler "Ungültige Codesyntax für BindItem". Item.DateField.ToShortDateString () funktioniert, aber bindet nicht an das Postback.

Nun haben wir uns wieder der alten Syntax zugewandt, aber wir würden gerne die moderne Kompilierzeit prüfen, aber trotzdem in der Lage sein, die Daten schön zu formatieren. Ist noch jemand davor reingeraten?

    
John Hoge 31.08.2012, 15:19
quelle

4 Antworten

2

Zum Anzeigen von Daten in der Rasteransicht können Sie Item.DateField.ToShortString () ausführen, und es funktioniert so, wie es Datenbindung in eine Richtung ist. Sie geben an, was bereits in der Aufzeichnung steht. BindItem.DateField.ToDateString () konvertiert das Objekt von DateTime in eine Zeichenfolge, was zu einem Fehler führt, wie Sie bereits sehen. Sie können Binden (Ausdruck, Format) in formview während des Editierens oder zum Akzeptieren eines neuen Eintrags verwenden.

    
Anand 09.10.2012 18:47
quelle
1

Ich habe lange damit gerungen. Meine Lösung bestand darin, Datenanmerkungen im Datenmodell zusammen mit der Verwendung eines DynamicControl in meinem FormView zu kombinieren. Ich habe angenommen, dass dies ein WebForms-Projekt im Gegensatz zu einem MCV-Projekt ist.

Lesen Sie etwas über den Bereich Datenzugriff in WebForms . Es ist eines von MSs besseren Aufstellungen für WebForms-Datenzugriffs- / Präsentationssteuerelemente und enthält Verweise auf das DynamicControl.

%Vor%

Ich werde dieses Muster verwenden, weil ich eine Zwei-Wege-Modellbindung mit der Fähigkeit benötige, Daten im richtigen Format (sowie Währung usw.) zu präsentieren. Es ist wirklich bedauerlich, dass das TextBox-Steuerelement die Formatierung der Modelldaten nicht vollständig behandelt. DataAnnotations werden in diesem Kontext ignoriert. Die Zweiwege-Bindung funktioniert, wenn keine Formatierung erfolgt, aber nicht, wenn Sie Formatierungen benötigen. Es scheint wie eine unvollständige WebForms-Implementierung IMO.

Auf der anderen Seite funktioniert die Verwendung von DynamicControl, aber Sie erhalten kein Intellisense für die DataField-Eigenschaft, die Ihnen beim Codieren Mitglieder des Modells zur Verfügung stellen würde. Was???? Eine weitere unvollständige und weniger bevorzugte Lösung.

    
secretwep 04.11.2014 20:16
quelle
1

Endlich, nachdem ich zwei Tage lang gekämpft habe, bekomme ich eine Lösung für dieses Zweiwege-Modellbindungsproblem für formatierten Feldwert. Entfernen Sie einfach das einfache oder doppelte Anführungszeichen "" oder "" hinter dem Eigenschaftentext der TextBox. Es funktioniert für mich wie ein Charme !! Wenn Sie jedoch die TextMode-Eigenschaft von TextBox auf Datum verwenden, entfernen Sie sie. Ursache, es wird kein Wert von Server oder DB angezeigt. Wenn Sie einen Datepicker oder einen Kalender verwenden möchten, können Sie einfach ein AJAX CalendarExtender-Steuerelement hinzufügen, um ein Datum aus dem Kalender auszuwählen.

%Vor%     
EsseyG 08.06.2015 13:40
quelle
0

Entschuldigen Sie bitte, dass dieser Thread wiederbelebt wurde, aber haben Sie darüber nachgedacht, Ihrer Modellklasse Datenanmerkungen hinzuzufügen? Mit anderen Worten:

%Vor%

Dies scheint für mich zu funktionieren, obwohl ich die Einzelheiten Ihres Falles nicht kenne.

    
karfus 14.07.2014 19:21
quelle