2009-07-01 77 views
0

我有一個非空的SQL日期時間字段,如果我的文本框中的asp.net mvc應用程序是空白的,因爲它不能將string.empty轉換爲datetime我得到錯誤。處理這種情況的優雅方式是什麼?從SQL處理NULL DateTime db

+3

你想要什麼,結果是這樣,你處理空字符串和無效的日期? – Guffa 2009-07-01 08:19:26

回答

2

不知道關於ASP,但如何:

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

你有三個選擇,這取決於應用程序的要求:

  • 更改數據庫允許NULL的將被輸入到數據庫中。這會要求你「特殊情況」的邏輯,以便不要試圖覆蓋「Convert.ToDateTime」,而是檢查string.Empty,並將DBNull.Value傳遞給數據庫。
  • 添加一些客戶端驗證來檢查文本框是否爲空,並拒絕提交表單。與驗證檢查服務器端一起確認傳入的值是否爲非空(也是有效的日期),然後保存失敗,並在有效日期不存在時向用戶返回錯誤消息。
  • 如果用戶未能指定值,則將一個默認值(如果可能)放入數據庫中,如DateTime.Now。
1

不要試圖保存數據,如果它是不完整的;顯示用戶的驗證錯誤並要求填寫日期。

0

我完全同意Fredrik。 如果您期望DB列中的值,則您也必須在模型中預期它。 在客戶端響應中創建模型之前,在客戶端/服務器端使用驗證。

1

當然這是更好地做

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