2009-07-01 9 views
0

Ich habe ein nicht null SQL-Datetime-Feld und wenn mein Textfeld in der asp.net mvc app leer ist, wie es nicht string.empty to datetime konvertieren kann, erhalte ich Fehler. Was ist eine elegante Art, mit dieser Situation umzugehen?Behandlung von null DateTime von SQL db

+3

Was behandeln tun Sie das Ergebnis sein? – Guffa

Antwort

2

Nicht sicher asp, aber wie etwa:

if (string.IsNullOrEmpty(text_from_textbox)) 
{ 
    date = DateTime.MinValue; 
} 
1

Sie haben drei Möglichkeiten, je nach den Anforderungen der Anwendung:

  • Ändern Sie die Datenbank zu ermöglichen NULL die in die Datenbank eingegeben werden. Dies würde dann erfordern Sie "Sonderfall" die Logik, so dass anstatt zu versuchen, "Convert.ToDateTime" decken Sie nach string.Empty und übergeben DBNull.Value stattdessen an die Datenbank.
  • Fügen Sie eine clientseitige Validierung hinzu, um zu prüfen, ob das Textfeld leer ist, und verweigern Sie das Senden des Formulars, falls dies der Fall ist. Begleiten Sie dies mit einer Validierungsüberprüfung serverseitig, die bestätigt, dass der übergebene Wert nicht null ist (und auch ein gültiges Datum) und dann das Speichern fehlschlägt und eine Fehlermeldung an den Benutzer zurückgibt, wenn kein gültiges Datum vorhanden ist.
  • Setzen Sie einen Standardwert (wenn möglich) wie DateTime.Now in die Datenbank, wenn der Benutzer keinen Wert angeben kann.
1

Versuchen Sie nicht, die Daten zu speichern, wenn sie nicht abgeschlossen ist; Zeige einen Validierungsfehler für den Benutzer und fordere, dass ein Datum ausgefüllt wird.

0

Ich stimme Fredrik vollkommen zu. Wenn Sie einen Wert in der DB-Spalte erwarten, müssen Sie dies auch in einem Modell erwarten. Verwenden Sie die Validierung auf der Client/Server-Seite, bevor Sie das Modell aus der Clientantwort erstellen.

1

Sicherlich ist es besser

DateTime date; 
if (!DateTime.TryParse(text_value, out date)) { 
    date = DateTime.MinValue; 
} 

auf diese Weise Sie leere Strings und ungültige Datums

Verwandte Themen