Informationen zum formatieren von Datum, Uhrzeit, Anzahl in ASP.NET Core 2.0, RAZOR-Tag-Helfer

Ich bin vor Probleme bei format-DateTime-und Numbers in ASP.NET MVC-Core 2.0 App mit Razor-Tag-Helfer.

Folgenden Beispiele guter Praxis möchte ich angeben Datenformat in die Daten des Modells im Zusammenhang mit der Formular-Ansicht.

Mein Modell

public class OrderFormModel
{
    public bool IsEdit { get; set; }

    [Display(Name = "Order Time: ")]
    public DateTime ORDER_LOCAL_TIME { get; set; }

    [Display(Name = "Order Qty (K): ")]
    public int QUANTITY_K { get; set; }

Ansicht:

        <div class="form-group col-md-9">
            <label asp-for="ORDER_LOCAL_TIME"></label>
            <input asp-for="ORDER_LOCAL_TIME" class="form-control" />
            <span asp-validation-for="ORDER_LOCAL_TIME" class="text-danger"></span>
        </div>
        <div class="form-group col-md-6">
            <label asp-for="QUANTITY_K"></label>
            <input asp-for="QUANTITY_K" min="1" class="form-control" style="text-align:right" />
            <span asp-validation-for="QUANTITY_K" class="text-danger"></span>
        </div>

Die gewünschten Formate sind

12/12/2017 12:23 (can be separated in to two fields as workaround)

1 000.145

Ich habe versucht, eine Menge von Optionen, aber keiner von Ihnen arbeitet.
Für die Anzahl Eingabe, ich möchte, wenn der Benutzer den Wert und verlässt den input, die das format angewendet werden soll.

Habe ich schon versucht:

 [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy hh:mm}")]
  (not applied at all)

 [DisplayFormat(DataFormatString = "{0:N3}")]
  (not applied at all)

 [DataType(DataType.Time)]
  (applied but seconds, milliseconds and AM/PM present)

 [DataType(DataType.Date)]
  (works for date only field)

Ihre Hilfe wird sehr geschätzt. Danke.

AKTUALISIERT

Als Stephen Muecke erwähnt [DisplayFormat] gilt das format, wenn die Seite zum ersten mal gerendert. Einverstanden, danke.
Ich habe die Startwerte für ORDER_LOCAL_TIME und QUANTITY_K Eigenschaften. DateTime = jetzt für ORDER_LOCAL_TIME und 1000 für QUANTITY_K.

So zum Beispiel auf Neue Order-Aktion möchte ich-Form-Ansicht um die Karte formatiert, die ursprünglichen Werte für Datum mit Zeit (mm:ss) und Menge (mit Tausender-Trennzeichen). Das problem ist, kann ich nicht erreichen.

Als Stephen Muecke Hinweise-format angewendet werden, wenn Ihr in den browser, und der Benutzer bearbeitet ein Wert und lässt die Eingabe ist eine andere Geschichte.
Wenn ich Java-Script-Funktion verbunden mit dem OnChange-Ereignis die MENGE input, ich kann formatieren und versuchen, wieder formatierte Zahl als text zu dem input. Aber in diesem Fall: << jquery.js:7592 Der angegebene Wert "3 000" ist keine gültige Zahl. Der Wert muss mit dem folgenden regulären Ausdruck: -?(\d+|\d+.\d+|.\d+)([eE][-+]?\d+)? >>

  • Möglich, Duplikat der stackoverflow.com/questions/42275423/...
  • Mit [DisplayFormat(DataFormatString = "{0: TT/MM/JJ hh:mm}", ApplyFormatInEditMode = true)] Ergebnisse als leere Eingabe mm/dd/yyyy --:--:--
  • [DisplayFormat] gilt das format, wenn die Seite zum ersten mal gerendert - its-server-Seite code. Wenn Sie ein format angewendet, wenn Ihr im browser, und der Benutzer bearbeitet ein Wert, dann müssen javascript (client-side code)
  • Muecke vielen Dank für dein Kommentar, ich habe aktualisiert mein Frage zu klären den Fall.
  • AFAIK gibt es keinen eingebauten client-seitige Unterstützung für diese .NET Core. Ich empfehle, mit globalizejs wie die Unterstützung für JavaScript-Bibliothek für die Bearbeitung von client-input-Validierung. Siehe github.com/globalizejs/globalize
  • Dank jcemoller. Ich werde haben Sie einen Blick auf die Bibliothek.

InformationsquelleAutor Jordan L | 2017-12-07
Schreibe einen Kommentar