Samstag, Dezember 14, 2019

So ermöglichen Sie einen null-Wert in der erforderlichen nullable DateTime in .NET MVC3, HTML form?

Habe ich versucht:

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

und

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

und alle Kombinationen mit und ohne ConvertEmptyStringToNull und AllowEmptyStrings.

In Aussicht, die ich habe:

@Html.EditorFor(m => m.BirthDateFrom)

Kann ich senden Sie das Formular mit gültigen Datum, aber mit einem leeren string in das Feld, es geht nur rot und das Formular kann nicht gesendet werden.
Gewusst wie: zulassen von HTML-Formular-Vorlage, die mit null oder leere Zeichenfolge-Wert in den geforderten nullable DateTime?

  • Es klingt wie ein contradictio in terminis. Wenn das Feld Erforderlich ist, warum ist es null-Werte zulässt? Sind Sie auf der Suche nach einem Weg, um auszudrücken, DateTime.Leer? Die Anforderung ist verwirrend.
  • DateTime.Leere wäre schön.
  • Ein „erforderlich nullable“ – Feld macht keinen Sinn, das ist wahrscheinlich, warum Sie passen nicht in, wie MVC funktioniert. Das heißt, entfernen Sie das required-Attribut sollte den trick tun, Nein?
InformationsquelleAutor Hogan | 2011-03-13

3 Kommentare

  1. 9

    Scheint es mir, dass ein einfaches löschen der [Required] Anmerkung ganz würde Ihre Anforderungen erfüllen.

  2. 5

    Die Tatsache, dass der Typ null-Werte zulässt, impliziert, dass der Wert nicht erforderlich. Es gibt keinen Punkt bei der Durchsetzung der entweder ein nicht-null-Wert oder einen null-Wert, da der null-Wert enthält nicht alle Informationen, sowieso.

    Es klingt wie das problem, das Sie haben mehrere Bedeutungen von ’null‘, z.B. ‚kein‘ vs. ‚alle‘ vs ‚unbekannt‘. Leider ist die .NET-Konzept der null nicht enthalten unterschiedliche Arten null. Die einzige Art, dies zu kommunizieren, wäre entweder:-

    a) „sentinal“ Werte, z.B. DateTime.MinValue kommuniziert etwas besonderes, und Sie sind sicher, dass DateTime.MinValue nie einen gültigen Wert in Ihrem domain-Modell.

    b) die Verwendung von externen flags, um anzugeben, die Bedeutung der fehlenden DateTime Wert, z.B. bool isAny, bool isUnknown usw. oder vielleicht eine entsprechende enum –

  3. 0

    Wenn man sich mit EF, könnte man es optional diese Weise.

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional();            
        base.OnModelCreating(modelBuilder);
    }

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...