如何将状态DateTime文本作为字符串?

时间:2011-03-16 16:17:00

标签: c# sql asp.net-mvc

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!";
}

4 个答案:

答案 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

然后在您的演示文稿中,如果您选择了这种方法,则可以检查nullMinValue

这样的事情:

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!" %>
<%
}
%>