将CreatedOn属性设置为当前日期

时间:2017-01-18 13:28:35

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

我按照以下链接尝试解决我的问题..

StackOverflow Solution

我遇到的问题是我无法使用当前日期在我的网络表单中填写一个字段。

我使用SQL 2014并拥有名为“CreatedOn”的列字段,将其设置为datetime数据类型。

我有一个模型,根据下面的代码保存此Web表单的属性:

namespace EDTSystem.Models.ViewModels
{
    public class Marie_Testing
    {
        //public int id { get; set; }

        [Display(Name = "Client Ref:")]
        public int id { get; set; }

        [Display(Name = "Created By:")]
        public string CreatedBy { get; set; }

        public class MyClass
        {
            private DateTime _CreatedOn = DateTime.Now;
            public DateTime CreatedOn { get { return _CreatedOn; } set { _CreatedOn = value; } }
        }
    }
}

我的Create.cshtml页面还有以下代码,其中包含剃刀语法:

<div class="form-group">
    <label for="CreatedOn"> CreatedOn:</label>
    @Html.TextBoxFor(model => model.MyClass, new {@class = "form-control", style = "width:185px;background:E1EBF9;", @readonly = "readonly" })
</div>

我打算做的就是用当前日期和时间填充这个Created on web字段。

我试图通过使用CreatedOn - Datetime.Now在控制器页面的代码视图中设置它,但是这没有,并且很多帖子已经解释了这个在记录提交到数据库之后被设置并且不会显示在网页作为默认时间和日期。

我使用的另一种方法是在SQL中将其设置为默认值,但在页面提交后再次完成此操作。

2 个答案:

答案 0 :(得分:1)

好的,我们来谈谈几件事:

首先,你不需要这个字段,因为它没有做任何事情,我建议在这里使用auto属性。您可以在DateTime中设置当前constructor

 public class Marie_Testing
        {
            public Marie_Testing() {
                 CreatedOn  = DateTime.Now;
            }
            public DateTime CreatedOn { get;set; }

            //rest of your code

        }

然后在要查看的视图上指定确切的属性:

<div class="form-group">
    <label for="CreatedOn"> CreatedOn:</label>
    @Html.TextBoxFor(model => model.CreatedOn, new {@class = "form-control", style = "width:185px;background:E1EBF9;", @readonly = "readonly" })
</div>

您的View应该定义模型:

@model EDTSystem.Models.ViewModels.Marie_Testing

请注意@model声明告诉“查看”Controller的预期结果。在Model内,在一天结束时Property,您指定了Marie_Testing的实例,因此您应该将其用作对象。

在您的代码中MyClass不是Marie_Testing的一部分,因为它只是分离的类(要精确的内部类)。如果您想让一个地方定义Date,则应该从中创建BaseModel和'继承'。

您的控制器显然应该返回Marie_Testing类的实例。

答案 1 :(得分:1)

一种可能的解决方案是设置属性值,如下所示:

public class Marie_Testing
{

  ----

  public DateTime CreatedOn { get; set; } = DateTime.Now;

  public Marie_Testing() 
  {
  } 
}

或在类构造函数中:

public class Marie_Testing
{

    ---

    public DateTime CreatedOn { get; set; }

    public class Marie_Testing
    {
        CreatedOn = DateTime.Now;
    }
}