【问题标题】:Spark null operator not working with nullable typesSpark null 运算符不适用于可空类型
【发布时间】:2011-08-12 16:59:42
【问题描述】:

我有一个可以为空的 DateTime,如果它有一个值,我想以 ShortDate 格式显示,但我无法正确处理。我在这里尝试使用空运算符 ($!{})。

它应该像这样工作:

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

但这给出了一个 InvalidOperationException: nullable object must have a value。

删除“值”部分也不起作用,这将给出明显的“System.Nullable 没有 ToShortDateString 的定义”消息。

使用条件运算符可以正常工作,但仅适用于如下属性:

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

我试图将它放在 td 元素中,而不是作为 td 的属性。 我在这里做错了什么,还是这是一个已知问题?

我知道捕获 InvalidOperationException(由 Nullable 类抛出)比捕获 NullReferenceException 更棘手,但我认为这是一个严重的缺陷。

干杯, 罗纳德

【问题讨论】:

    标签: nullable flex-spark


    【解决方案1】:

    从 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2012-06-04
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多