【问题标题】:DateTime in Entity Framework实体框架中的日期时间
【发布时间】:2018-04-25 12:12:50
【问题描述】:

我在前端使用代码优先实体框架方法正确显示 (C#) DateTime / (LocalDB) Date 类型时遇到问题。

StudentDetailsDTO模型类:

public int ID { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
[Column(TypeName = "Date"), DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime BirthDate { get; set; }
public string SID { get; set; }
public string Course { get; set; }
public string GroupName { get; set; }
public string Specialty { get; set; }

BirthDate 列正常工作。它以提供的格式返回日期(不包括时间)作为表中DateTime 的替换形式。

但是,在前端,它仍然与特定学生的Details table中的T属性一起显示,好像在该列中输入Date没有效果。

如果我改用string 数据类型,就不会有问题。不过,我正在尽最大努力坚持适当的数据类型约定。

我需要更改控制器中的某些内容吗? HTML 视图?或者也许在 Knockout.js 中?我已经尝试过 Stackoverflow 上提供的一些解决方案,但它们要么不起作用,要么我在实施它们时遇到了麻烦。

我是一个完全的新手并且迷路了。这么小的变化,这么多的问题。 对于每一个可能的提示或解决方案,我将不胜感激。感谢您的宝贵时间。

【问题讨论】:

  • DateTime 不以任何格式存储日期。它总是存储日期和时间。所以你需要在你的前端格式化它

标签: c# knockout.js entity-framework-6 asp.net-web-api2


【解决方案1】:

这取决于您如何呈现日期。

在剃须刀中你可以使用:

@Html.DisplayFor(model => model.BirthDate)

或者如果您使用 Knockout 来呈现日期,您可以考虑使用moment.js,您只需将日期替换为您查看模型中的出生日期。

moment('2013-01-01T00:00:00.000').format('YYYY-MM-DD')

【讨论】:

    【解决方案2】:

    您必须使用 DataType 属性装饰 BirthDate 才能使其工作。

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime BirthDate { set; get; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多