if (reader["LastCheck"] != DBNull.Value)
{
job.LastCheck = Convert.ToDateTime(reader["LastCheck"]);
}
else
{
job.LastCheck = DateTime.Now;
}
如果在DB中为空值,我想给出一些字符串消息。 LastChange是一个DateTime,它无法写入一些文本状态。怎么做?? 这样的事情,但工作:
else
{
job.LastCheck = "DB doent have a value!";
}
答案 0 :(得分:5)
您无法将字符串分配给DateTime。
您可以将LastCheck转换为可以为空的DateTime。
public DateTime? LastCheck { get; set; }
然后将您的代码更改为
else
{
job.LastCheck = null;
}
当需要向用户显示DateTime时,
if(!job.LastCheck.HasValue)
// display your "DB doesn't have a value!" string here
答案 1 :(得分:1)
您可以将LastCheck
的类型更改为DateTime?
,使其可以为空,即您可以为其指定null - 或者将其设置为DateTime.MinValue
然后在您的演示文稿中,如果您选择了这种方法,则可以检查null
或MinValue
。
这样的事情:
if(job.LastCheck == null)
或
if(job.LastCheck == DateTime.MinValue)
答案 2 :(得分:0)
你已经同意你想要做的事情是不可能的。
选项:
1)您可以将“LastCheck”设为字符串属性。并将dataTime.ToString()或您的消息存储在该变量中。然后用户可以使用DateTime.TryParse(),如果失败,他将收到你的消息。
2)[我建议]为DateTime和Message创建一个占位符类。
pulbic class LastCheckInfo{
public DateTime LastCheck{get;set;}
public string ErrorMessage{get;set;}
}
现在,您可以填充此类的实例。在阅读有效日期之前,您的用户会检查“ErrorMessage”为空或为空。
public LastCheckInfo GetLastCheckInfo(...){
if (reader["LastCheck"] != DBNull.Value)
{
return new LastCheckInfo(Convert.ToDateTime(reader["LastCheck"], "");
}
else
{
return new LastCheckInfo(DateTime.Min, "Failed to parse/get LastCheck Date") ;
}
}
答案 3 :(得分:0)
您想要实现的目标是不可能的,但如果您要在视图上发布信息,则可以执行此操作。可能不是你的最佳答案,但我希望这会给你一个解决方案的想法。
<%
if (reader["LastCheck"] != DBNull.Value)
{
%>
<%= Convert.ToDateTime(reader["LastCheck"]) %>
<%
}
else
{
%>
<%="DB doent have a value!" %>
<%
}
%>