我有一个可以为空的DateTime我想以ShortDate格式显示它是否有值,但我无法正确。我想在这里使用null运算符($!{})。
它应该像这样工作:
<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更棘手,但我认为这是一个严重的缺陷。
干杯, 罗纳德
答案 0 :(得分:0)
从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>