Нулевой оператор Spark не работает с обнуляемыми типами - PullRequest
0 голосов
/ 12 августа 2011

У меня есть обнуляемый DateTime, который я хочу показать в формате ShortDate, если он имеет значение, но я не могу понять это правильно. Я пытаюсь использовать нулевой оператор ($! {}) Здесь.

Это должно работать так:

<td>$!{period.Enddate.Value.ToShortDateString()}</td>

Но это дает InvalidOperationException: обнуляемый объект должен иметь значение.

Удаление части 'Value' также не будет работать, что даст очевидное сообщение 'System.Nullable не имеет определения для ToShortDateString'.

С условным оператором он работает нормально, но этот работает только для таких атрибутов, как это:

<td value="$!{period.Enddate.Value.ToShortDateString()}?{period.Enddate.HasValue}"></td>

И я пытаюсь получить его внутри элемента td, а не как атрибут для td. Я что-то здесь не так делаю, или это известная проблема?

Я понимаю, что перехватывать исключение InvalidOperationException (генерируемое классом Nullable) сложнее, чем перехватывать исключение NullReferenceException, но я думаю, что это серьезный недостаток.

Ура, Рональд

1 Ответ

0 голосов
/ 13 марта 2012

Начиная с Spark v1.6, вот несколько вариантов:

использовать спецификатор формата -

<td>${ string.Format("{0:M/dd/yy}", period.Enddate) }</td>

или создать дополнительное свойство презентации -

public string EnddateText
{
  get
  {
    var result = Enddate.HasValue ? Enddate.Value.ToShortDateString() : string.Empty;
    return result;
  }
}

<td>${ period.EnddateText }</td>
...