我正在使用最新版本的Telerik MVC擴展,帶有Razor視圖引擎的ASP.NET MVC 3以及實體框架4.1代碼。實體框架如何處理值爲0001/01/01的日期
視圖模型:
public class EditGrantApplicationViewModel
{
// Other properties
public DateTime HospitalisedFromDate { get; set; }
public DateTime HospitalisedToDate { get; set; }
}
控制器的操作方法:
public ActionResult Create()
{
EditGrantApplicationViewModel viewModel = new EditGrantApplicationViewModel();
return View(viewModel);
}
創建視圖:
<tr>
<td valign="top"><label>From:</label></td>
<td>@(Html.Telerik().DatePickerFor(x => x.HospitalisedFromDate)
.Name("HospitalisedFromDate")
)<br>
@Html.ValidationMessageFor(x => x.HospitalisedFromDate)
</td>
<td> </td>
<td valign="top"><label>To:</label></td>
<td>@(Html.Telerik().DatePickerFor(x => x.HospitalisedToDate)
.Name("HospitalisedToDate")
)<br>
@Html.ValidationMessageFor(x => x.HospitalisedToDate)
</td>
</tr>
格蘭特應用程序類:
public class GrantApplication
{
// Other properties
public DateTime HospitalisedFromDate { get; set; }
public DateTime HospitalisedToDate { get; set; }
}
語境:
public class HbfContext : DbContext
{
public DbSet<Bank> Banks { get; set; }
public DbSet<AccountType> AccountTypes { get; set; }
public DbSet<GrantApplication> GrantApplications { get; set; }
public DbSet<AuditEntry> AuditEntries { get; set; }
}
交付申請表:
HospitalisedFromDate datetime null
HospitalisedToDate datetime null
我有幾個關於日期的問題,以及如何EF 4.1代碼先處理日期。
第一次加載視圖時,HospitalisedFromDate和HospitalisedToDate初始化爲0001/01/01。我不必選擇日期。所以如果沒有選擇,那麼它會嘗試並將0001/01/01插入到我的數據庫表中。這是當我得到一個錯誤:
將datetime2數據類型轉換爲日期時間數據類型導致超出範圍的值。\ r \ n該語句已被終止。
我該如何解決這個問題,如果沒有選擇任何內容,它會向表列添加NULL值?
嘗試使用可空日期而不是'DateTime?''public DateTime? HospitalisedFromDate {get;組; }' –