C# 如何处理MVC模型中出现的空datetime
我有一个控制器操作,它执行SQL查询并将模型类型的列表传递回视图。然后,视图输出一个简单的表,其中包含每个模型中包含的数据 我的模型:C# 如何处理MVC模型中出现的空datetime,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个控制器操作,它执行SQL查询并将模型类型的列表传递回视图。然后,视图输出一个简单的表,其中包含每个模型中包含的数据 我的模型: public class UserModel { [Key] public string UserID { get; set; } public string EmailAddress { get; set; } public string Password { get; set; } public string Secu
public class UserModel
{
[Key]
public string UserID { get; set; }
public string EmailAddress { get; set; }
public string Password { get; set; }
public string SecurityToken { get; set; }
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime CreatedDate { get; set; }
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime LastUsedDate { get; set; }
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime LastUpdatedDate { get; set; }
}
我的看法是:
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.EmailAddress)
</td>
<td>
@Html.DisplayFor(modelItem => item.SecurityToken)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatedDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastUsedDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastUpdatedDate)
</td>
</tr>
}
我将它们分配给模型,如下所示:
var user = new UserModel
{
CreatedDate = (DateTime)reader["CreatedDate"],
LastUsedDate = (DateTime)reader["LastUsedDate"],
LastUpdatedDate = (DateTime)reader["LastUpdatedDate"]
}
将属性类型从
DateTime
更改为可为空的DateTime(DateTime?
)
现在,在SQL中,不要用任何日期时间值(例如:1900-01-01)替换NULL
。只需返回NULL
SELECT UserID, EmailAddress, SecurityToken, CreatedDate,LastUpdatedDate
FROM table1
ORDER BY CreatedDate DESC
从数据读取器读取数据时,执行空检查。如果该值不为null,则将其分配给LastUpdateDate属性
var user = new UserModel
{
EmailAddress = reader.GetString(reader.GetOrdinal("EmailAddress")),
CreatedDate = reader.GetDateTime(reader.GetOrdinal("CreatedDate"))
}
if(!reader.IsDBNull(reader.GetOrdinal("LastUpdatedDate")))
{
user.LastUpdatedDate = reader.GetDateTime(reader.GetOrdinal("LastUpdatedDate"));
}
将属性类型从
DateTime
更改为可为空的DateTime(DateTime?
)
现在,在SQL中,不要用任何日期时间值(例如:1900-01-01)替换NULL
。只需返回NULL
SELECT UserID, EmailAddress, SecurityToken, CreatedDate,LastUpdatedDate
FROM table1
ORDER BY CreatedDate DESC
从数据读取器读取数据时,执行空检查。如果该值不为null,则将其分配给LastUpdateDate属性
var user = new UserModel
{
EmailAddress = reader.GetString(reader.GetOrdinal("EmailAddress")),
CreatedDate = reader.GetDateTime(reader.GetOrdinal("CreatedDate"))
}
if(!reader.IsDBNull(reader.GetOrdinal("LastUpdatedDate")))
{
user.LastUpdatedDate = reader.GetDateTime(reader.GetOrdinal("LastUpdatedDate"));
}
将您的型号更改为使用可为空的
:
将您的型号更改为使用可为空的:
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime? CreatedDate { get; set; }
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime? LastUsedDate { get; set; }
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime? LastUpdatedDate { get; set; }