开发者

Spark null operator not working with nullable types

I h开发者_如何学Pythonave a nullable DateTime I want to show in ShortDate format if it has a value, but I can't get it right. I am trying to use the null operator ($!{}) here.

It should work like this:

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

But this gives an InvalidOperationException: nullable object must have a value.

Removing the 'Value' part won't work either, that will give the obvious 'System.Nullable has no definition for ToShortDateString' message.

With the conditional operator it works fine, but that one only works for attributes like this:

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

And I am trying to get it inside the td element, not as an attribute for td. Am I doing something wrong here, or is this a known issue?

I understand that catching an InvalidOperationException (thrown by the Nullable class) is trickier than catching a NullReferenceException, but I think it is a serious flaw.

Cheers, Ronald


As of Spark v1.6, here are some options:

use a format specfier -

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

or create an additional presentation property -

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

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜