【问题标题】:How to use ToShortDateString() on nullable datetime column如何在可为空的日期时间列上使用 ToShortDateString()
【发布时间】:2016-06-16 16:00:21
【问题描述】:

当日期时间列允许空值时,如何使用ToShortDateString() 方法?

我在这个 asp.net 代码 <%= Model.EndDate.ToShortDateString() %> 上收到以下错误:

“System.Nullable”不包含“ToShortDateString”的定义,并且找不到接受“System.Nullable”类型的第一个参数的扩展方法“ToShortDateString”(您是否缺少 using 指令或程序集引用? )

【问题讨论】:

  • Model.EndDate.Value.ToShortDateString() ?在访问之前一定要检查EndDate 不为空。

标签: c# asp.net datetime


【解决方案1】:

正确的做法是在这个例子中:

<%=Model.EndDate.HasValue ? Model.EndDate.Value.ToShortDateString() : string.Empty; %>

可为 Null 的值始终公开一个名为“Value”的属性,如果不为 null,则该属性将包含数据,以及另一个名为“HasValue”的属性,用于指示数据是否存在。

【讨论】:

  • 我认为这是一种不好的做法 - 使用 string.Empty 而不是 null
  • @MikhailNeofitov 只是一个例子。
【解决方案2】:

在 С# 6 中,您可以编写以下代码:

<%= Model.EndDate?.ToShortDateString() %>

在早期版本中,通常写成

<%= Model.EndDate != null ? Model.EndDate.Value.ToShortDateString() : null %>

【讨论】:

  • 必须是&lt;%= Model.EndDate?.ToShortDateString() %&gt;
【解决方案3】:

可空的DateTime 应该像下面这样格式化;

<%= Model.EndDate.HasValue ? 
     Model.EndDate.Value.ToShortDateString() : 
     "Something"%>

【讨论】:

    【解决方案4】:

    你可以试试下面,

    <%= Model.EndDate != null ? Model.EndDate.ToShortDateString() : "n/a" %>
    

    【讨论】:

      【解决方案5】:

      你可以试试这个。

      <%= Model.EndDate!= DBNull.Value ? Model.EndDate.ToShortDateString() : string.empty %>
      

      谢谢

      【讨论】:

        猜你喜欢
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        相关资源
        最近更新 更多