Asp.net mvc 5在添加内容时添加了时间戳?

时间:2015-06-11 15:46:21

标签: c# asp.net asp.net-mvc asp.net-mvc-5

我们说我的网站上有一个评论部分存储在数据库中。当我添加新评论时,我想看看谁添加了它以及他/她发布的日期/时间。

我不确定如何继续这样做。谁能把我推向正确的方向?

我知道我能做到这一点。 public DateTime Time { get; set; } 然而,如果用户输入他自己的日期,我需要自动完成。

这是我尝试的模型,它不编译,而是生成Error 3 The type name 'Now' does not exist in the type 'System.DateTime'

public class Suggestion {
    public int Id { get; set; } 
    public string Comment { get; set; } 
    public DateTime.Now Time { get; set; } 
}

这是我得到的错误Error 3 The type name 'Now' does not exist in the type 'System.DateTime'

5 个答案:

答案 0 :(得分:6)

如果您希望它每次都自动运行,您应该在构造函数中设置WhenCreated。这样你就不必记得把它放在任何地方。

public class Suggestion 
{
  public DateTime WhenCreated { get; set; }
  /* other props */

  public Suggestion() 
  {
    WhenCreated = DateTime.Now;
  }
}

从数据库记录中重新水化Suggestion时,EntityFramework或您正在使用的任何持久层都会更新WhenCreated。这是在调用构造函数之后发生的,所以无论你在那里有什么初始值都不重要。当您的应用程序创建新的Suggestion时,WhenCreated字段将自动设置为“现在”。

注意:DateTime.Now会返回服务器时区的当前日期和时间。您可能需要为您的用户处理本地时区的翻译,如果是这样的话,最好使用DateTime.UtcNow来获取UTC时间,以便将来更容易本地化(赢得& #39; t在DaylightSaving移动期间加倍/减少一小时)

答案 1 :(得分:1)

public class Suggestion {
  public int Id { get; set; } 
  public string Comment { get; set; } 
  public DateTime Time { get; set; } 
}

Suggestion s = new Suggestion();
s.Time = DateTime.Now;

答案 2 :(得分:0)

两种可能的选择:

  1. 当您在数据库中定义要存储注释的表时,添加新列以在创建行时存储日期时间。给它默认值。例如,在Sql Server中,您可以使用getdate()作为默认值。这种方法的优点是您不需要编写额外的C#代码来将值设置为WhenCreated列:
  2. CREATE TABLE [dbo].[Coments](
       [Id] [int] NULL,
       [Comment] [nvarchar](50) NULL,
       [WhenCreated] [datetime2](7) NOT NULL DEFAULT getdate()
    )
    
    1. 如果你想在C#中这样做,你可以使用DateTime.Now
    2.  public class Suggestion {
              public int Id { get; set; } 
              public string Comment { get; set; } 
              public DateTime WhenCreated { get; set; } 
          }
      
          var n = new Suggestion();
          n.WhenCreated = DateTime.Now;
      

答案 3 :(得分:0)

我像这样解决了这个问题

 public class Time
{
    private DateTime _date = DateTime.Now;

    public int ID { get; set; }

    public DateTime DateCreated
    {
        get { return _date; }
        set { _date = value; }
    }

}

答案 4 :(得分:0)

你对自己想做的事情有正确的认识,你只是不知道如何去做。

如果你想在对象创建时设置一个值,那么完美的地方就是在对象的默认构造函数中。

每次通过调用new关键字创建对象时,程序都会调用默认构造函数。

所以,回到你的问题,要完成你想做的事,你只需要做这样的事情:

public class YourClass() 
{
    public DateTime CreatedAt { get; set; }

    public YourClass()
    {
        CreatedAt = DateTime.Now;    
    }
}

快乐的小道!