как дать состояние DateTime текст в виде строки? - PullRequest
0 голосов
/ 16 марта 2011
if (reader["LastCheck"] != DBNull.Value)
{
    job.LastCheck = Convert.ToDateTime(reader["LastCheck"]);
}
else
{                         
    job.LastCheck = DateTime.Now;
}

Я хочу выдать некоторое строковое сообщение, если его значение равно нулю в БД. LastChange - это DateTime, и его невозможно записать в виде некоторого текста. Как это сделать?? как то так но работает:

else
{
    job.LastCheck =  "DB doent have a value!";
}

Ответы [ 4 ]

5 голосов
/ 16 марта 2011

Вы не можете назначить строку для 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 голос
/ 16 марта 2011

Либо вы можете изменить тип LastCheck на DateTime?, что сделает его обнуляемым, т. Е. Вы можете присвоить ему значение null - либо установить его в DateTime.MinValue

Затем в своей презентации вы можете проверить null или MinValue, выбрали ли вы этот подход.

Примерно так:

if(job.LastCheck == null)

или

if(job.LastCheck == DateTime.MinValue)
0 голосов
/ 16 марта 2011

То, что вы пытаетесь достичь, невозможно, но если вы собираетесь опубликовать в представлении, вы можете сделать это. Возможно, это не лучший ответ для вас, но я надеюсь, что это даст вам идею для обхода.

<%
if (reader["LastCheck"] != DBNull.Value)
{
%>
    <%= Convert.ToDateTime(reader["LastCheck"]) %>
<%
}
else
{
%>                         
    <%="DB doent have a value!" %>
<%
}
%>
0 голосов
/ 16 марта 2011

Вы уже согласны, что то, что вы пытаетесь сделать, невозможно.

Параметры:

1) Вы можете сделать "LastCheck" строковым свойством.И сохраните dataTime.ToString () или ваше сообщение в этой переменной.И тогда пользователь может использовать DateTime.TryParse (), и в случае неудачи он получит ваше сообщение.

2) [что я бы порекомендовал] Создать класс-заполнитель для вашего DateTime и сообщения.

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...