【问题标题】:nullable date time exception可为空的日期时间异常
【发布时间】:2015-11-02 00:38:52
【问题描述】:

在存储库上,我将可空字符串 " o.Attribute("PreorderLanchDate")" 转换为 nullable datetime

代码如下:

PreorderLanchDate = o.Attribute("PreorderLanchDate") == null ? (DateTime?)null : DateTime.Parse(o.Attribute("PreorderLanchDate").Value), 

在控制器上,launchdate 可以为空,无法获取值,因为它显示了空值异常。 这是代码:

LaunchDate = (DateTime)product.PreorderLanchDate

【问题讨论】:

  • 尝试 LaunchDate =product.PreorderLanchDate 因为 PreorderLanchDate 可以为空
  • product.PreorderLaunchDate 是一个可为空的 'DateTime' 所以你可以试试(DateTime?)

标签: c# sql datetime model-view-controller nullable


【解决方案1】:

您可以使用 as 运算符在兼容的引用类型或可空类型之间执行某些类型的转换。

var nullableDateTime = product.PreorderLanchDate as DateTime;

if ( nullableDateTime != null )
    LaunchDate = nullableDateTime;

【讨论】:

    【解决方案2】:

    试试这个。

      //along with the null reference check, Use `String.IsNullOrEmpty` to check o.Attribute("PreorderLanchDate").Valuen
     PreorderLanchDate = o.Attribute("PreorderLanchDate") == null || String.IsNullOrEmpty(o.Attribute("PreorderLanchDate").Value) ? (DateTime?)null : DateTime.Parse(o.Attribute("PreorderLanchDate").Value), 
    
    
    
      //Cast to a nullable DateTime
    LaunchDate = (DateTime?)product.PreorderLanchDate
    

    【讨论】:

    • LaunchDate = (DateTime?)product.PreorderLanchDate LaunchDate 已在模型类中初始化为可为空,因此其给出异常“无法转换 'System.DateTime?'到“System.Datetime”。存在显式转换(您是否缺少演员表)“
    【解决方案3】:

    product.PreorderLaunchDate 是一个可以为空的DateTime,如果它的值为null,你会得到一个异常,将其转换为普通的DateTime

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2020-09-18
      相关资源
      最近更新 更多